2009-01-19 9 views
6

Ich habe ein Problem Booleans mit mysqli_stmt :: bind_param in PHP5 zu binden.PHP5 sqli bind_param Problem mit der Bindung boolescher Werte

Die SQL-Abfrage ist die folgende: (?,?,?,) Einfügen in nvp_notes (Subjekt, messageid, receivedate, lesen) Werte

Wo 'lesen' ist ein tinyint, entweder 0 oder 1, wie ich Probleme mit Bit mit mysqli hatte. So sind die Typen, die ich in bind_param Liste sind:

$stmt->bind_param('sdsd', ...); 

Ich habe auch ‚SDSB‘ versucht und ‚SDSS‘, aber nichts scheint zu funktionieren, und ich bekomme immer die Meldung:

Warning: mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement 

Wenn Ich entferne das Lese-Feld in der Anweisung, alles funktioniert gut. Mir sind die Ideen ausgegangen. Sicherlich arbeitet bind_param mit booleans ??

Antwort

10

Sie konnten die boolean auf eine 1 oder 0 mit intval() (oder werfen es mit (int) oder (integer)) konvertieren. Gemäß mysqli_stmt::bind_param()'s documentation sind die einzigen Typen, die Sie binden können, Ints, Doubles, Strings und Blobs.

1

Danke für die Antwort, ich habe es endlich geschafft, das Problem zu beheben (nach dem Versuch Typ Casting und sogar aus Bind_param, indem Sie es als 1 oder 0 in der Abfrage zu beheben). Wie auch immer, 'lesen' ist ein reservierter Spaltenname in MySQL, also habe ich nur den Spaltennamen geändert und es funktioniert gut. Es scheint seltsam, diese spezielle Fehlermeldung jedoch für diese Art von Problem zu erhalten.

0

Als das, was Sie binden müssen, ist eigentlich ein Integer, ich 'd' (double) durch ein 'i' würde swtich:

$ stmt-> bind_param ('Sisi', ...);