Вероятно, это связано с тем, что MySQL преобразует строку bbccc
в целое число, результат которого равен 0. Затем вы фактически выбираете все записи, где personId > 0
, что, вероятно, все или все, кроме одной из ваших строк .
Если $personID
является целочисленным значением, вы должны связать его как таковое, а не как строку:
$stmt->bind_param("i", $personID);
Чтобы увидеть это поведение в действии, выполните следующий запрос:
mysql> SELECT CAST('bbbcc' AS UNSIGNED);
+---------------------------+
| CAST('bbbcc' AS UNSIGNED) |
+---------------------------+
| 0 |
+---------------------------+
1 row in set, 1 warning (0.00 sec)