मेरे पास निम्न SQL क्वेरी है जिसे PHP का उपयोग करके निष्पादित किया गया है, $q इसमें एक स्ट्रिंग वाला एक चर है।

$sql =$conn->prepare('SELECT * FROM namebase WHERE name LIKE "%?%"');
$sql->bind_param('s', $q);
$sql->execute();

निष्पादित करते समय, मुझे यह कहते हुए एक त्रुटि संदेश प्राप्त होता है,

Warning: mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement in C:\xampp\htdocs\file\s.php on line 39

लाइन 39 $sql->bind_param('s', $q); है

इस त्रुटि का कारण क्या है? मैं क्वेरी में केवल एक चर पास कर रहा हूं। फिर यह त्रुटि संदेश क्यों दिखा रहा है?

0
Ronald 26 मई 2018, 13:26

2 जवाब

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

mysqli_stmt::bind_param विधि के लिए दस्तावेज़ीकरण पृष्ठ पर टिप्पणियों पर एक नज़र डालें, किसी को ठीक वैसी ही समस्या का सामना करना पड़ा है: https://secure.php.net/manual/en/mysqli-stmt.bind-param.php#102048

मुझे LIKE ऑपरेटर से समस्या थी

यह कोड काम नहीं किया:

<?php
$test = $sql->prepare("SELECT name FROM names WHERE name LIKE %?%");
$test->bind_param("s", $myname);
?>

समाधान है:

<?php
$test = $sql->prepare("SELECT name FROM names WHERE name LIKE ?");
$param = "%" . $myname . "%";
$test->bind_param("s", $param);
?>
2
vimist 26 मई 2018, 13:47

यदि आपके पास डेटाबेस तक पहुंच है तो मैं एक संग्रहित प्रक्रिया बनाने का सुझाव दूंगा।

और फिर निम्नानुसार बनाएं:

getNames(
    IN nameVAR VARCHAR(256)
)

SELECT * FROM namebase WHERE name LIKE ‘%nameVAR%’;

फिर अपने PHP कॉल में अपना वर्तमान विवरण डालने के बजाय getName (?)

-1
Lewis Blundell 26 मई 2018, 13:46