Почему bind_param не завершается ошибкой, если я передаю строку, даже если она помечена как «i» (целое число)? - PullRequest
2 голосов
/ 27 сентября 2019

Мне интересно, почему следующий оператор mysqli работает, даже если я передаю строку и она ожидает целое число.

$id = "A";

$sql = "SELECT m.mandator_id, longname, shortname"
     . " FROM mandator m "
     . " WHERE mandator_id != ? "
     . " ORDER BY mandator_id";

$err = "";
if (!$stmt = $this->con->prepare($sql)) {
    $err .= "Prepare failed: (" . $this->con->errno . ") " . $this->con->error;
}
if (!$stmt->bind_param("i", $id)) {
    $err .= "Binding parameters failed: (" . $stmt->errno . ") " . $stmt->error;
}
...

Я прошел по коду, но часть "Сбой привязки параметров" не достигнута

                                    Type specification chars

Персонаж |Описание

i |соответствующая переменная имеет тип integer

d |соответствующая переменная имеет тип double

s |соответствующая переменная имеет тип string

b |соответствующая переменная является блобом и будет отправлена ​​в пакетах

Документация

...