2014-03-13 52 views
1

我的代碼有什麼問題?具體的錯誤信息是:您在SQL語法中有錯誤;檢查對應於你的MySQL服務器版本的手冊,在第5行'*'附近使用正確的語法。

查詢數據庫時出錯您的SQL語法有錯誤;檢查對應於你的MySQL服務器版本使用附近的正確語法「*」在行手動5

我的代碼是:

if (isset($_POST['submit'])) { 
    $name = $_POST['name']; 

$query = mysql_query(" 
    SELECT timein, timeout 
    FROM studentInfo 
    WHERE name = '$name' 
    ORDER BY time DESC 
    LIMIT * 
    ") 
    or die("Error querying database ".mysql_error()); 
while($minutes = mysql_fetch_array($query)){ 
    echo "timein: ".$minutes['timein']."<br />"; 
    echo "timeout: ".$minutes['timeout']."<br />"; 
    } 
    } 
+2

「限制」後放一些整數不是'*'通配符。 –

+0

你認爲'LIMIT *'應該做什麼?這不是MySQL熟悉的語法...... – Wrikken

+1

此代碼在其中有一個SQL注入漏洞。 – halfer

回答

0

這是錯誤的:

LIMIT * 

Limit之後放一些整數不是*百搭牌。

documentation

LIMIT子句可以被用來限制SELECT語句返回的行數。 LIMIT需要一個或兩個數字參數,它們都必須是非負整數常量(除了使用預準備語句時)。

有兩個參數,第一個參數指定要返回的第一行的偏移量,第二個參數指定要返回的最大行數。的初始行的偏移量爲0(未1):

SELECT * FROM tbl LIMIT 5,10; # Retrieve rows 6-15 

從某一檢索所有的行偏移到結果集的結尾,就可以使用一些大量用於第二參數。此語句檢索從第96行中的所有行到最後:

SELECT * FROM tbl LIMIT 95,18446744073709551615; 

有了一個說法,該值指定的行數,從結果集的開頭返回:

SELECT * FROM tbl LIMIT 5;  # Retrieve first 5 rows 

在其他字,LIMIT row_count相當於LIMIT 0,row_count。

0

限值應的值(非負整數)不*

$query = mysql_query(" 
    SELECT timein, timeout 
    FROM studentInfo 
    WHERE name = '$name' 
    ORDER BY time DESC 
    LIMIT 100 
    ") 
    or die("Error querying database ".mysql_error()); 

它將返回第一100行。

相關問題