【发布时间】:2014-04-27 22:41:06
【问题描述】:
我的代码是:
.....
.....
$sql = 'SELECT '.$return_fields.' FROM '.$table.' WHERE '.$search_field.'=:'.$search_field;
$stmt = $conn->prepare($sql);
$stmt->bindParam($search_field, $search_val);
$stmt->execute();
....
....
$search_field = 'reg_user_linked', $search_val = 'aa@gmail.com'.
执行语句时出现此错误,我无法弄清楚原因:
参数编号无效:列/参数从 1 开始
谁能帮忙?
经过几个小时的尝试,我发现这个错误只发生在我处于调试模式时。如果我运行代码并打印结果,它可以工作...... 有谁知道为什么会这样? (我的IDE是NetBeans 7.2,调试工具是xdebug)...
【问题讨论】:
-
显示您的
$search_field和$search_val内容。您所展示的内容对于诊断问题几乎毫无用处。 -
我同意@MarcB。我猜
$search_field是 0 或'0'或''或false或null- 任何对 bindParam() 评估为零的东西。 -
谢谢各位。 $search_field = 'reg_user_linked', $search_val = 'aa@gmail.com'
-
也值得在你的代码中临时打印出
$sql,以防你对这些变量名之一犯了错误。 -
@halfer 我把 sql 粘贴到 mysql 中,它工作正常,当然,我用它的值替换了 binding_variable。