首页 > 解决方案 > 为什么 Update 语句中有语法错误?

问题描述

$uploadDate = date("Y-m-d"); 
$sql = "INSERT into book (img_path, title, author, publisher, description, quantity, category, publish_date, upload_id, isbn, sku) values('$book_name', '$bookTitle', '$bookAuthor', '$bookPublisher', '$bookDescription', $bookStock, '$category', '$uploadDate', '$uploadID', '$isbn', '$sku');";
$statusAccept = 'Book Published';
$sql .= "UPDATE upload SET status = '$statusAccept' AND file = '$filename' WHERE no = '$uploadID'";
// Execute multi query
if (mysqli_multi_query($conn,$sql)) {
    do {
        // Store first result set
        if ($result=mysqli_store_result($con)) {
        // Fetch one and one row
            while ($row=mysqli_fetch_row($result)) {
                echo "New record created successfully <br/>";
            }
            // Free result set
            mysqli_free_result($result);
        }
    }
    while (mysqli_next_result($con));
}

mysqi_multi_query()从 w3schools 的示例中使用问题,第一个查询成功插入,但第二个查询成功更新,状态值错误。状态变为数字 0 ("0") 的字符串,而不是来自 variable 的字符串$statusAccept。现在,我尝试重定向到另一个 PHP 文件,并再次将状态从零的字符串更新为之前所需的变量的字符串。

标签: phpmysqlsql-update

解决方案


您的第二个查询不正确:

UPDATE upload SET status = '$statusAccept' AND file = '$filename' WHERE no = '$uploadID'

它应该是:

UPDATE upload SET status = '$statusAccept', file = '$filename' WHERE no = '$uploadID'

阅读有关UPDATE 语句的更多信息。

并且不要忘记使用Prepared Statements


推荐阅读