Я новичок в подготовленных заявлениях. Запрос SQL работает нормально, если я вставляю фиктивные данные, и он работает без привязки целого числа ($ id).

Где я не прав?

sql = "UPDATE staff_type SET s_type=?, description=? WHERE s_type_id=?;";
$stmt = mysqli_stmt_init($conn);
mysqli_stmt_prepare($stmt, $sql));      
mysqli_stmt_bind_param($stmt, "ssi", $type, $desc, $id);        
mysqli_stmt_execute($stmt);
-1
Blank 20 Авг 2018 в 17:29

4 ответа

Лучший ответ

Я обнаружил ошибку, из-за которой целочисленный параметр не связывается. Я не знал, что отключенные поля ввода не могут публиковать данные, поэтому я нашел решение заменить атрибут «disabled» на «только для чтения».

1
Blank 20 Авг 2018 в 16:36

Вы должны подготовить заявление в первую очередь

**Procedural style**
$stmt = mysqli_prepare($conn, "UPDATE staff_type SET s_type=?, description=? WHERE s_type_id=?");
mysqli_stmt_bind_param($stmt, "ssi", $type, $desc, $id); 
mysqli_stmt_execute($stmt);

Проверьте http://php.net/manual/en/mysqli-stmt .bind - param.php

0
Krish 20 Авг 2018 в 14:35

Попробуй это

$sql= $con->prepare("update staff_type set s_type=?, description=?  WHERE s_type_id = ?");
if ($result){
$sql->bind_param('ssi', $s_type, $desc, $s_type_id );
$sql->execute();  
}

Примечание: s представляет строку, а i представляет целое число

Надеюсь, это поможет тебе

0
akinlex 20 Авг 2018 в 16:23

Перед привязкой параметров необходимо подготовить оператор SQL с параметрами в нем.

$sql = "UPDATE staff_type SET s_type=?, description=? WHERE s_type_id=?;";
$stmt = $conn->prepare($sql);       
$stmt->bind_param("ssi", $type, $desc, $id); 
$stmt->execute();
1
RiggsFolly 20 Авг 2018 в 14:34
51932994