我试图更新我的MySQL表,但它抛出错误:
' SQLSTATE [HY093]:参数号无效:参数未定义'
这是我的代码
$sql = "
UPDATE registration
SET fname, city, zip_code, state, tele_no, PayPal_email, mobile_no,address
VALUES :name, :city, :zip_code, :state, :tele_no, :PayPal_email, :mobile_no, :address
WHERE id = $id
";
$result = $stud->update($sql, array(":fname"=>$fn, ":city"=>$ct, ":zip_code"=>$zp, ":state"=>$st, ":tele_no"=>$off, ":PayPal_email"=>$pel, ":mobile_no"=>$mn, ":address"=>$ad));
答案 0 :(得分:0)
试试这个
$stm = $db->prepare($sql);
$stm->execute(array(":fname"=>$fn,":city"=>$ct,":zip_code"=>$zp,":state"=>$st,":tele_no"=>$off,":PayPal_email"=>$pel,":mobile_no"=>$mn,":address"=>$ad));
答案 1 :(得分:0)
VALUES
您的 :name
子句指定名为execute()
的绑定变量,而您传递给execute()
的绑定数组(它应该是update()
,而不是:fname
)指定名为$sql = "UPDATE registration
SET fname = :name,
city = :city,
zip_code = :zip_code,
state = :state,
tele_no = :tele_no,
PayPal_email = :PayPal_email,
mobile_no = :mobile_no,
address = :address
WHERE id = :id";
$stmt = $conn->prepare($sql);
$stmt->execute(array(':fname' => $fn, ':city' => $ct, ':zip_code' => $zp, ':state' => $st, ':tele_no' => $off, ':PayPal_email' => $pel, ':mobile_no' => $mn, ':address' => $ad, ':id' => $id));
的绑定变量。这是您引用的特定错误消息的原因。
您的语法也有一些错误,因此修复一个问题不会解决所有问题。正确的语法是
$id
请注意,参数WHERE
也会通过绑定变量传递给 {{1}} 子句。
答案 2 :(得分:-1)
据我所知,PDO使用以下sinax:
$conn->executeQuery('SELECT * FROM <your_table> WHERE a = ? AND b = ?', [$aVariable, $bVariable]);
我的意思是您应该将:fname
,:city
等替换为?
,并将变量作为简单数组[$fn, $ct, ...]
P.S。从PHP 5.4开始,您可以使用短数组语法,它将array()替换为[]。
COMENT RELATED UPDATE:
我发现你真的可以使用命名参数,但你应该在查询准备后绑定它们:
$stmt->bindParam(":fname", $fn, PDO::PARAM_STR);
$stmt->bindParam(":city", $ct, PDO::PARAM_STR);