In PHP funktioniert das PDO :: PDOStatement-> bindParam () arbeiten, wie es zu erwarten ist?

StackOverflow https://stackoverflow.com/questions/1445540

  •  22-07-2019
  •  | 
  •  

Frage

Ich versuche zum ersten Mal PDO in PHP aus. Ich dachte, dass PDOStatement-> bindParam () wäre eine coole Art sein, die Datentypen der Werte zu setzen, dass ich in der SQL-Abfrage übergeben. Aber irgendwie tut es für mich arbeiten. Zum Beispiel habe ich den Typ einer Variablen in bindParam Aufruf an INT. Aber es tut immer noch werfen Fehler, auch wenn ich rein String-Werte, um es passieren. Vielleicht mache ich etwas falsch. Hier ist der Ausschnitt aus dem Code ..

$query = "select * from PDO_TABLE where A_COLUMN = :test1 or B_COLUMN = :test2";

$test1 = '0';
$test2 = 'a';
$preparedStatement = $conn->prepare($query);

echo $preparedStatement->bindParam(':test1', $test1, PDO::PARAM_INT);
echo $preparedStatement->bindParam(':test2', $test2, PDO::PARAM_INT);

$preparedStatement->execute();

Mache ich alles richtig? Nicht ist dieser vermeintliche Fehler für den Parameter test2 werfen?

War es hilfreich?

Lösung

PDO nicht eine Ausnahme auslösen oder einen Fehler auslösen, sondern bestenfalls die Parameter in ein Integer / long konvertieren. Z.B. in pdo_stmt.c:

if (PDO_PARAM_TYPE(param->param_type) == PDO_PARAM_INT && Z_TYPE_P(param->parameter) == IS_BOOL) {
  convert_to_long(param->parameter);
}

d. wenn Sie einen Parameter als PDO_INT registriert haben, aber die Variable enthält ein boolean PDO wandelt die Bool ein int / long.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top