簡體   English   中英

query failedSQLSTATE [42000]:語法錯誤或訪問沖突:1064 SQL語法錯誤

[英]query failedSQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax

查詢失敗:

SQLSTATE [42000]:語法錯誤或訪問沖突:1064 SQL語法中有錯誤; 查看與您的MySQL服務器版本對應的手冊,以便在':c2,add =:c3,mob =:c4 WHERE id =:c1'在第1行附近使用正確的語法

我在這個程序中有語法錯誤,我無法更新數據庫中的“cus”表。請任何人都可以解決這個錯誤。

謝謝

我的PHP編碼如下:

if(isset($_POST['submit']))
{
    $c1=$_POST['cid1'];
    $c2=$_POST['cname1'];
    $c3=$_POST['cadd1'];
    $c4=$_POST['cmob1'];

    $sql1 = "UPDATE 'cus' set 'name'=':c2' , 'add'=':c3' , 'mob'=':c4'  WHERE 'id'=':c1'";

    $st1=$conn->prepare($sql1);
    $st1->bindParam(":c2",$c2,PDO::PARAM_STR);
    $st1->bindParam(":c3",$c3,PDO::PARAM_STR);
    $st1->bindParam(":c4",$c4,PDO::PARAM_STR);
    $st1->bindParam(":c1",$c1,PDO::PARAM_INT);
    $st1->execute();
    header("location:frm.php");


}

您需要在表名和列名周圍使用反引號,或者如果名稱不是保留字,則只需將引號完全保留。 單引號用於字符串。 您也不能將占位符放在引號內。

$sql1 = "UPDATE `cus` set `name`=:c2 , `add`=:c3 , `mob`=:c4  WHERE `id`=:c1";

標識符引號不是單引號。 他們應該是反擊。 只是放棄他們。

占位符不需要包裝它們的引號:

$sql1 = "UPDATE cus SET name = :c2 , `add` = :c3 , mob = :c4  WHERE id = :c1";

編輯:

保留字 ADD除外。 這需要反叛

if(isset($_POST['submit'])) {
    $c1 = $_POST['cid1'];
    $c2 = $_POST['cname1'];
    $c3 = $_POST['cadd1'];
    $c4 = $_POST['cmob1'];

    $sql1 = "UPDATE cus SET name = :c2 , `add` = :c3 , mob = :c4  WHERE id = :c1";

    $st1 = $conn->prepare($sql1);
    $st1->bindParam(":c2",$c2,PDO::PARAM_STR);
    $st1->bindParam(":c3",$c3,PDO::PARAM_STR);
    $st1->bindParam(":c4",$c4,PDO::PARAM_STR);
    $st1->bindParam(":c1",$c1,PDO::PARAM_INT);
    $st1->execute();
    header('Location: frm.php');
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM