每当我尝试使用以下代码更新表单时,更新将使用title字段中的0值和content字段中的上一个值进行静默。有人可以帮忙!!!
if( $form_title && $form_content ){
$sql = "UPDATE home_page
SET title = '{$form_title}' AND content = '{$form_content}' WHERE id = {$id}";
echo $sql;
$result = $this->mysqli->query( $sql );
if(!$result){
echo 'Error'. mysqli_error();
return;
}else{
$this->success_message = "Update Successfull";
return;
}
}
if( isset( $_POST['update'] ) ){
$admin_obj->update($_POST, $id);
}
答案 0 :(得分:3)
MySQL默默地转换你的UPDATE
语句并执行布尔操作。
服务器将更新语句读取为
UPDATE home_page
SET title = ('{$form_title}' AND (content = '{$form_content}'))
WHERE id = {$id}
您要做的是将AND
替换为,
以使其有效。
UPDATE home_page
SET title = '{$form_title}', content = '{$form_content}'
WHERE id = {$id}
作为旁注,如果变量的值( s )来自外部,则查询易受SQL Injection
攻击。请查看下面的文章,了解如何防止它。通过使用PreparedStatements
,您可以摆脱在值周围使用单引号。