当有人访问我的网站时,我想记录用户ip,但是当你到达网站时,表可能不存在,所以UPDATE查询给我一个错误。我还需要检查现有的表格。我试过:阅读,但似乎没有人能够解决这个问题,如果表格不存在的话。 这可能是一个错字。
$db->query("INSERT INTO track (tm, user_agent, host, ip, port, lang) VALUES ('$tm','$user_agent','$host','$ip','$port','$lang') WHERE NOT EXISTS (
SELECT ip FROM track WHERE ip='$ip'");
答案 0 :(得分:5)
您可能希望查看INSERT ... ON DUPLICATE KEY UPDATE Syntax,如果密钥已存在,您可以指定操作
答案 1 :(得分:0)
我发现了你的错字。
您的(错误)代码具有更好的格式:
$db->query("
INSERT INTO track (
tm,
user_agent,
host,
ip,
port,
lang
)
VALUES (
'$tm',
'$user_agent',
'$host',
'$ip',
'$port',
'$lang'
)
WHERE NOT EXISTS
(
SELECT ip FROM track WHERE ip='$ip'
");
修复后:
$db->query("
INSERT INTO track (
tm,
user_agent,
host,
ip,
port,
lang
)
VALUES (
'$tm',
'$user_agent',
'$host',
'$ip',
'$port',
'$lang'
)
WHERE NOT EXISTS
(
SELECT ip FROM track WHERE ip='$ip'
) -- that was missing
");
无论如何,你可能需要这样的东西:
// check if ip exists
$query = $db->$query("
SELECT count(ip) FROM track WHERE ip='$ip'
");
$result = $query->fetchFirstRowSomehow(); // i dont know methods you have in $db object
$rows = $result['0']; // getting first (only) column that should contain count()
if ($rows == 0)
{
// your insert code here
}
else
{
// your update code here
}