Я запрограммировал следующий PHP и MySQL:Mysql where clause bug?
$id = $_GET['id'];
if ($stmt = $db->prepare("SELECT disco, fecha, amazon from discos where id=? LIMIT 1")) {
$stmt->bind_param("i", $id); /* NOTE: "s" doesn't work */
$stmt->execute();
$stmt->bind_result($disco, $fecha, $amazon);
if($stmt->fetch()){
/* Do some stuff */
}
}
Дело в том, когда значение $ ид есть, например: 100abcd, запрос все еще выбирает, в то время как он не должен, так как нет id, вызванный так, НО он извлекает идентификатор 100.
Почему это происходит? Благодарю.
'-> bind_param (" i ", ...)' отличает его к целому числу. Если вы хотите оставить принудительное принуждение типа к MySQL, тогда привяжите его как строку. – mario
Да, я уже имел это с «s» вместо «i», и все равно не работает. –
две вещи проверяют, что '$ id' имеют какое-либо значение или не также помещают некоторое предложение ORDERBY перед' LIMIT' и проверяют. попробуйте –