php
  • mysql
  • 2013-11-28 21 views -2 likes 
    -2

    您的SQL語法錯誤;檢查對應於你的MySQL服務器版本正確的語法使用近'統計WHERE ip =‘:: 1’& & date = '28手動-11-2013‘’在1號線我收到錯誤SQL

    <?php 
    
    require_once 'includes/config.php'; 
    
    $getStats = mysql_query("SELECT * FROM 'stats' WHERE `ip` = '" . $ip . "' && `date` = '" . $time ."'") or die(mysql_error()); 
    
    if(mysql_num_rows($getStats) == 0) 
    { 
        $select = mysql_query("INSERT INTO `stats` (`ip`,`data`,`hits`,`online`) VALUES ('" . $ip . "','" . $time . "', '1', '" . $timestamp ."')") or die(mysql_error()); 
        } 
    else 
    { 
        $select = mysql_query("UPDATE `stats` SET `hits` = `hits`+1, `online` = '" . $timestamp . "' WHERE `ip` = '" . $ip . "' && `date` = '" . $time . "'"); 
        } 
    ?> 
    
    +0

    這個問題將解決,但會出現另一個問題。這是新問題「字段列表」中的未知列'data' – equals

    回答

    3

    MySQL的quotes identifiers with a backtick`stats`,並'統計' - 這是什麼原因造成的語法錯誤。

    刪除無用的標識符報價(stats is not reserved)或切換到適當的標識符報價。

    隨後的問題是,data,這正如錯誤所述。正確的列可能是date(應該引用或重命名)。

    此外,日期應以'YYYY-MM-DD' (or variant)的形式提供。查詢與特定於語言環境的日期一起工作的事實使我相信正確的DATE列未被使用,因爲它應該是。現在更正列類型將避免將來出現問題,特別是在排序時。


    除了上述校正,也update the query to use mysqli/PDO and placeholders - 這將整理代碼,消除使用廢棄的函數,並防止SQL注入(意外或其他方式)。

    +0

    此問題將解決,但會出現另一個問題。這是新問題'字段列表'中的未知列'data' – equals

    +0

    @ user3036848還要確保'\'date \''列具有適當的數據類型:'DATE'。否則,你會遇到不同的問題,比如「錯誤」排序的數據。我在回答中添加了適當的部分。 – user2864740

    +0

    https://fbcdn-sphotos-b-a.akamaihd.net/hphotos-ak-prn2/1412470_733414666686841_128887452_o.jpg,@ user2864740 – equals

    相關問題