![](/img/trans.png)
[英]Failed to run query: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax
[英]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.