所以这是代码块:
$query = "UPDATE users SET ?=? WHERE ?=?";
$type = "s";
$type .= substr(gettype($valname), 0, 1);
$type .= 'i';
if ( $smtp = $this->conn->prepare($query) )
{
$smtp->bind_param($type, $colname, $valname, 'id', 40);
$smtp->execute();
$smtp->close();
}else
{
return $this->conn->error;
}
由于某种原因,它拒绝绑定参数,它给了我这个错误: 您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在'?=附近使用正确的语法?在哪里?=?'在第1行
如果我在问号周围添加反引号(`)或单引号('),我会收到此错误:
未知栏'?'在'where子句'
任何想法出了什么问题?我一直坐在这里几个小时玩它,上帝,这是令人沮丧的!
非常感谢!
答案 0 :(得分:3)
据我所知,你只能使用?条件的占位符,而不是表/字段名称。
答案 1 :(得分:2)
我认为您不能在预准备语句中动态定义列,只能在这些值中进行转义等等。您需要将列名放在$ query字符串中,如果它来自未知来源请确保你过滤它并验证它。