मेरी PHP स्क्रिप्ट में, सर्वर से मेरा कनेक्शन काम करता है लेकिन मेरी एसक्यूएल क्वेरीज़ नहीं हैं




mysql apache (2)

कनेक्शन काम करता है, मुझे कोई कनेक्शन त्रुटि नहीं मिलती। लेकिन जब मैं स्क्रिप्ट चलाता हूं मुझे एक अनिर्धारित इंडेक्स त्रुटि मिलती है और यह "0 परिणाम" बनाती है, यद्यपि मेरी तालिका निश्चित रूप से आती है और मैं उस चीज़ के लिए खोज कर रहा हूं जो मुझे पता है टेबल में है।

मैं स्थानीय सर्वर की मेजबानी करने और PHP स्क्रिप्ट को चलाने के लिए डेटाबेस और अपाचे (xampp) का प्रबंधन करने के लिए MySQL कार्यक्षेत्र का उपयोग कर रहा हूं। क्या यह समस्या हो सकती है? क्या एपाचे वेबसाइट के रूप में एक ही जगह में डेटाबेस को होस्ट करने के लिए कोई तरीका है?

$sql="SELECT * FROM book_table WHERE Title LIKE $input OR Author LIKE $input OR Barcode LIKE $input";
$result = $conn->query($sql);

if ($result) {

 while($row = $result->fetch_all()) {
     echo "<br>Title: " . $row["Title"]. " - Author: " . $row["Author"];
 }
} else {
 echo " <br> 0 results";
}

आपके लिए मेरा सुझाव पीडीओ है :

$dsn = 'mysql:host=localhost;dbname='.$dbname;//$dbName is the name of your database
$user = 'root';
$pass = '123';//use your login information here
$db = new PDO($dsn, $user,$pass);
$query = "SELECT * FROM book_table WHERE Title LIKE :info OR Author LIKE :info OR Barcode LIKE :info";
$ps = $db->prepare($query);
$ps->bindValue(':info', $input)
$ps->execute();
$result = $ps->fetchAll(PDO::FETCH_ASSOC);

//iterate over result
if (!empty($results)){
    foreach ($result as $row) {
        echo "<br>Title: " . $row["Title"]. " - Author: " . $row["Author"];
    }
} else {
    echo " <br> 0 results";
}

साथ ही, MySQL की LIKE सही तरीके से उपयोग करना याद रखें। जब आप किसी स्ट्रिंग के एक भाग से मिलान करना चाहते हैं, तो आपको % प्रतीक का उपयोग करना होगा।

उदाहरण के लिए:

SELECT * FROM book_table WHERE Title LIKE "%goodbook%"

यह सभी पंक्तियों को लौटा देगा जिनके पास शीर्षक के भाग के रूप में "अच्छी किताब" है।


आप इस तरह से कोशिश कर सकते हैं चूंकि आप mysqli_* उपयोग mysqli_* मैंने इसे तैयार किया है बयान और bind_param

नोट: परीक्षण नहीं किया गया इसलिए थोड़ा समायोजित करने की आवश्यकता हो सकती है

$param = '$input';
$sql= $conn->prepare("SELECT * FROM book_table WHERE Title LIKE ? OR Author LIKE ? OR Barcode LIKE ?");
$sql->bind_param("s", $param);
$sql->execute();

if($res->num_rows > 0) {
   while ($row = $res->fetch()) {          
         echo "<br>Title: " . $row["Title"]. " - Author: " . $row["Author"];          
   }
} else { 
      echo " <br> 0 results"; 
}




server