【发布时间】:2011-01-08 23:17:17
【问题描述】:
自从我上线以来,我的 php 脚本出现了很大的问题。有些请求被执行了,有些则没有……但是当我用 Wamp 测试它时,一切都很好。
让我给你看一个例子:
$answer = $db -> query("SELECT ID FROM users WHERE ID='{$_SESSION['id']}';");
$data = $answer->fetch();
if ($data['ID']=="")
{
$req= $db->prepare('INSERT INTO users(ID, etat) VALUES(:ID, :state)');
$req->execute(array(
'ID'=>session_id(),
'state' => 'NORMAL',
));
}
else
{
$db->exec("UPDATE users SET state='NORMAL' WHERE ID='{$_SESSION['id']}';");
}
这里条件被忽略,只执行插入到。当我重新加载页面时,insert to 将再次执行,而不是 else。
你有什么想法吗?
我以为可能是php.ini配置的问题。但是我唯一需要替换的 php.ini 是 Wamp 的,我不知道如何适应它......
【问题讨论】:
-
用英文命名变量/列通常会有很大帮助(因为这里懂英语的人比懂法语的人多)。我无法帮助您解决问题,但如果我的意图正确,您可以使用
INSERT ... ON DUPLICATE KEY UPDATE将您的代码简化为单个查询。 -
你说得对,我现在已经翻译了,但我希望我在翻译时没有犯任何其他错误。我要看看“on duplicate”的用法。
-
你确定 $_SESSION['id'] 里面有什么吗,也许错误发生在你的测试之前并且 SQl 不是假的,只是你的会话数据从未设置(或者会话是在请求之间丢失,请检查您是否每次都没有新的 cookie)