哪里不存在mysql

时间:2013-02-21 16:40:23

标签: php mysql

当有人访问我的网站时,我想记录用户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'");

2 个答案:

答案 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
    }