更新sql表

时间:2013-03-24 14:32:59

标签: php html mysql sql sql-update

每当我尝试使用以下代码更新表单时,更新将使用title字段中的0值和content字段中的上一个值进行静默。有人可以帮忙!!!

adminClass.php

更新功能

 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;
       }
    }

admin.php查看页面

if( isset( $_POST['update'] ) ){
   $admin_obj->update($_POST, $id);
}

1 个答案:

答案 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,您可以摆脱在值周围使用单引号。