PDO查询返回错误
我有一个非常简单的问题...跑步什么的下方会返回一个错误:PDO查询返回错误
SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens
但我只是没有看到它。我计算了8个变量和8个令牌......我错过了什么?我一直在盯着它很多年,希望能在这里指出什么是我没有看到的。对这个愚蠢的问题抱歉。
$forward = '-';
$datetime = strtotime('now');
$mysqldate = date('Y-m-d H:i:s', $datetime);
$systemInfo = leSniff();
$stmt = $conn->prepare('UPDATE users SET last_login = :mysqldate,
last_ip = :last_ip, forward = :forward, platform = :platform,
browser = :browser, system = :system
WHERE email = :email AND password = :password');
$query->execute(array(
':email' => $email,
':password' => $password,
':mysqldate' => $mysqldate,
':last_ip' => $_SERVER['REMOTE_ADDR'],
':forward' => $forward,
':platform' => $systemInfo['platform'],
':browser' => $systemInfo['name'],
':system' => $systemInfo['userAgent']
));
那就是:
$stmt = $conn->prepare('UPDATE users SET last_login = :mysqldate, last_ip = :last_ip, forward = :forward, platform = :platform, browser = :browser, system = :system WHERE email = :email AND password = :password');
$query->execute(array(
应该是:
$stmt = $conn->prepare('UPDATE users SET last_login = :mysqldate, last_ip = :last_ip, forward = :forward, platform = :platform, browser = :browser, system = :system WHERE email = :email AND password = :password');
$stmt->execute(array(
^^^^^
哦哇......好吧,我希望我不是唯一一个犯这样愚蠢错误的人!非常感谢您指出这一点,我从我找到的脚本中复制了一些内容,并忘记更改变量以匹配我自己的工作。当它允许我接受这个答案时(9分钟)。 – Galadre 2013-02-19 12:50:11
我想知道社区与这类问题有什么关系。 – 2013-02-19 14:40:49
我怕你的牺牲品一个错字:
$stmt = $conn->prepare('...');
$query->execute(...);
你准备的在$stmt
声明,但你正在执行$query
。
为了防止这类情况,你应该给准备语句的更具描述性的变量名,而不是$stmt
或$query
:
$update_users = $conn->prepare('...');
$update_users->execute(...);
啊那样。我想你是对的!我应该并且会开始更好地指定我的变量。感谢您的建议。 – Galadre 2013-02-19 12:55:31
你不应该有这样的一般变量名多准备语句。 – 2013-02-19 12:50:02
为什么不呢?原谅我我的无知:) – Galadre 2013-02-19 12:51:31
我已经在我的回答中解释了这一点。 – 2013-02-19 12:52:38