मैं केवल SQL इंजेक्शन का परीक्षण करने के लिए "शॉपिंग वेबपेज" बना रहा हूं (मैं कंप्यूटरफाइल के "एसक्यूएल इंजेक्शन" वीडियो में दिखाए गए वेबपृष्ठ का नकल करने की कोशिश कर रहा हूं)। डेटा की खोज करना कोई समस्या नहीं है, लेकिन डिफ़ॉल्ट परिणाम (जब मैं पृष्ठ को रीफ्रेश करता हूं) कुछ भी नहीं के बजाय मेरे डीबी के अंदर एक आइटम है। क्या आप मेरी मदद कर सकते हैं? इसके अलावा केवल एक आइटम आता है जब मेरे पास उस खोज क्वेरी से मेल खाने वाले दो आइटम होते हैं।

Php पर मेरे लिए सब कुछ नया है। मैंने बहुत सारे Youtube ट्यूटोरियल देखे हैं और नए वेबसाइट कोड बनाने की कोशिश की है ताकि यह जांचा जा सके कि मैंने जो ट्यूटोरियल लिया था वह सही था। लेकिन वास्तव में मेरे लिए कुछ भी काम नहीं आया।

<?php
$conn = mysqli_connect("localhost", "root", "") or die("Could not 
connect");
mysqli_select_db($conn, "search_products") or die("Could not find the 
database");

$output = '';
$count = 0;

if (isset($_POST['searchq']))
{
    $search_query = $_POST['searchq'];

    $query = mysqli_query($conn, "SELECT * FROM products WHERE name LIKE 
           '%$search_query%'") 
        or die("Could not search for the query");

$count = mysqli_num_rows($query);
if ($count == 0)
{
    $output = 'No Results';
}
else
{
    while ($row = mysqli_fetch_array($query)) {
        $name = $row['name'];
        $price = $row['price'];
        $stock = $row['instock'];

        $output = '<div> '.$name.' '.$price.' '.$stock.' </div>';
        }
    }
}
?>

<--यह मेरा php कोड है -->

-1
D. Park 14 जून 2019, 18:01

2 जवाब

सबसे बढ़िया उत्तर

नीचे की लाइन के कारण आपको केवल एक ही आइटम मिल रहा है

$output = '<div> '.$name.' '.$price.' '.$stock.' </div>';

उपरोक्त पंक्ति पिछले मान को ओवरराइड करती है। तो इसे नीचे से बदलें:

$output .= '<div> '.$name.' '.$price.' '.$stock.' </div>'; (परिवर्तनीय नाम के बाद बिंदु को देखें)।

उपरोक्त पंक्ति प्रत्येक आइटम को सम्‍मिलित करेगी। उम्मीद है ये मदद करेगा।

0
Sameer K 14 जून 2019, 18:17

मदद करता है या नहीं यह देखने के लिए निम्नलिखित बदलें
if (isset($_POST['searchq'])) से if (isset($_POST['searchq']) && !empty($_POST['searchq']))
$output में "=" के बजाय ".=" होना चाहिए, आप बस नए आउटपुट को पुराने के साथ बदल रहे हैं। आपको सभी परिणाम प्राप्त करने के लिए संयोजित होना चाहिए।

0
Siri 14 जून 2019, 18:04