【发布时间】:2014-02-28 19:52:49
【问题描述】:
PDOStatement::execute() [pdostatement.execute]: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in 我得到这个错误为什么?列名正确。
$baslik = $_POST["makale_basligi"];
$icerik = trim($_POST["makale_icerigi"]);
$meta_desc = $_POST["makale_meta_description"];
$id = $_POST["makale_id"];
$kategori = $_POST["makale_kategorisi"];
$makale_link = convertTextToLinkFormat($baslik);
$update_makale = $db->prepare("UPDATE makale SET "
. "makale_kategorisi = :kategori,"
. "makale_link_baslik = :link,"
. "makale_baslik = :baslik, "
. "makale_icerik = :icerik, "
. "makale_meta_description = :desc WHERE makale_id = '".$id."' ");
$update_makale->execute(array(':kategori'=>$kategori,':link'=>$makale_link ,':baslik' =>$baslik,':icerik' =>$icerik,':desc' =>$meta_desc));
【问题讨论】:
-
为什么要在查询中直接附加
$id?确保准备好的语句安全的唯一方法是正确使用它们。 -
你是对的,但是有问题吗?
-
可能。
$id包含什么?如果它包含?或:,那么它可以被解释为参数。或者更糟糕的是,如果我使用 SQL 注入来破坏您的查询;) -
一个整数来自_POST
-
这里的另一个预感:如果在 SQL 和参数数组中将
:desc替换为:metadesc,它会起作用吗?