2017-06-13 2 views
0

hallo i eine Frage zu bind_param haben jeden Code funktioniert ist aber nicht diese ... wahrscheinlich dumme Frage ..bind_param Anzahl der Elemente nicht mit Anzahl der Elementanordnung

$key = "`".implode("`, `",array_keys($notifikasi))."`"; 
echo $value = "'".implode("', '",array_values($notifikasi))."'"; 
$query = $dbcon->prepare("INSERT INTO `notifikasi` ($key) VALUES ($value)"); 
$query->bind_param("iiiis",$value); 
$query->execute(); 

ich habe den Wert echo:

'1','1','2','3','profile.php?confirm=33' 

i irgendeine Zahl auf bind_param noch diesen Fehler bekam gesetzt haben:

mysqli_stmt::bind_param(): Number of elements in type definition string doesn't match number of bind variables 

jeder kann meinen m beantworten verstehst du?

[EDIT] macht nichts, ich habe die Lösung gefunden:
Verwendung call_user_func_array()

mysqli bind_param for array of strings

dank

+0

Sie sind nicht verbindlich Parameter korrekt. Die Abfragezeichenfolge sollte Platzhalter wie '?' Oder ': foo' enthalten und nicht Ihre tatsächlichen Werte. Beispiele finden Sie in der Dokumentation zu 'bind_param'. –

+0

Ich habe das Dokument gelesen ja sollte es setzen?
also habe ich es auf den Prepare-Status (?,?,?,?,?) Bind_param (iiiis, $ value) gesetzt.
meine Frage hat Array etwas damit zu tun? Es ist immer noch Fehler – faddi

Antwort

0

Das Problem versuchen wird, Sie Parameter zu binden, wenn Sie habe keinen Platzhalter für sie hinzugefügt.

Sie sollten niemals Benutzereingaben vertrauen, daher würde ich vorschlagen, dass Sie keine Spaltennamen aus der Eingabe auffüllen. Ich würde Spaltennamen in Abfrage fix:

$notifikasi = [1, 2, 'profile']; 
$query = $dbcon->prepare("INSERT INTO `notifikasi` (col1, col2, col3) VALUES (?, ?, ?)"); 
$query->bind_param("iis", $notifikasi); 
+0

Ich Dummy-Datei mit dieser Quelle erstellen, hat nicht funktioniert – faddi

Verwandte Themen