Как мне обновить значение tinyint до 1 в php вместо того, чтобы оно становилось пустым - PullRequest
0 голосов
/ 02 марта 2019

Я пытаюсь обновить логическое значение (tinyint) базы данных до 1, но вместо этого оно обновляется до NULL, а все остальные значения изменяются правильно.

Ошибка, которую я получаю, когда я оставляю ее какниже:

Ошибка привязки: 0 Ошибка выполнения: 2031 Нет данных для параметров в подготовленном операторе

Если я изменю $ dealt_Out = 1;в переменную, перед подготовленным оператором все значения изменяются правильно, кроме логического значения, которое в итоге становится NULL.

<?php
if(!($stmt = $mysqli->prepare("UPDATE card SET player_Holding = ?, dealt_Out = 1 WHERE id_Card = ?"))){ 
echo "Prepare failed: "  . $stmt->errno . " " . $stmt->error;
}
if(!($stmt->bind_param("iii",$_POST['player_Holding'],$_POST['dealt_Out'],$_POST['id_Card']))){

echo "Bind failed: "  . $stmt->errno . " " . $stmt->error;
}
if(!$stmt->execute()){
echo "Execute failed: "  . $stmt->errno . " " . $stmt->error;
}     else {
echo "Edit " . $stmt->affected_rows . " row to Card Holder. <br/><br/><strong>Returning to 'Make a Move'</strong>";
}

?>

1 Ответ

0 голосов
/ 02 марта 2019

Проверьте хорошо.Это должно быть delt_out =? not delt_out = 1 Если нет, выньте $ _ POST ['delt_out'], в bind_param и удалите один i

Я изменил ваш код.Надеюсь, это решит вашу проблему

<?php
$dealtout=1;
if(!($stmt = $mysqli->prepare("UPDATE card SET player_Holding = ?, dealt_Out = ? WHERE id_Card = ?"))){ 
echo "Prepare failed: "  . $stmt->errno . " " . $stmt->error;
}
if(!($stmt->bind_param("iii",$_POST['player_Holding'],$dealtout,$_POST['id_Card']))){

echo "Bind failed: "  . $stmt->errno . " " . $stmt->error;
}
if(!$stmt->execute()){
echo "Execute failed: "  . $stmt->errno . " " . $stmt->error;
}     else {
echo "Edit " . $stmt->affected_rows . " row to Card Holder. <br/><br/><strong>Returning to 'Make a Move'</strong>";
}

?>
...