2012-12-27 21 views
2

我想打印出一些主題信息,但它不是很好。這是我的查詢:mysql查詢使用純文本,但沒有與變量

SELECT * FROM topics WHERE id='$read' 

這是行不通的。我回應了$read變量,它說1。那麼,如果我這樣做:

SELECT * FROM topics WHERE id='1' 

它完美的作品。我不明白是什麼問題。 $read或其他任何類似的東西都沒有隱藏的字符。

+0

當你說它不起作用,什麼是不工作?你有錯誤嗎?它沒有返回結果嗎? – Jrod

+1

什麼是錯誤信息? – theMarceloR

+0

不要'echo'變量來調試,使用'var_dump'。 '回聲「1」;'會給你輸出爲'回聲‘1’相同;',你會不知道任何非打印字符,而'var_dump'會告訴你,以字節爲單位的類型和尺寸。 –

回答

0

ID通常是一個數字字段,它應該是

$id = 1; 
$query = "SELECT * FROM topics1 WHERE id = {id}" 

如果使用strings出於某種原因,火象

$id = '1'; 
$query = "SELECT * FROM topics1 WHERE id = '{$id}'" 
+0

不需要括號:) –

+0

是,添加它只是可讀性的原因 – Akash

0
SELECT * FROM topics WHERE id=$read 

查詢它認爲它是字符串,如果你把我單引號

1

像這樣嘗試:

$query = "SELECT * FROM topics WHERE id='" . $read . "'" 
-1

嘗試這樣的:SELECT * FROM主題WHERE ID = $讀

0

我不知道爲什麼所有的參與者並沒有讀到明確表示質疑,認爲與查詢報價

SELECT * FROM topics WHERE id='1' 

行得通。

至於問題本身,它可能是一些錯字。也許在一些其他的代碼,而不是直接連接到$讀取變量

0

嘗試

$query = sprintf("SELECT * FROM topics WHERE id='%s';",$read); 

還記得逃脫變量如果需要的話。

0

看起來您可能在查詢生成時遇到了與其他人都指向的問題。正如Akash指出的那樣,首先將查詢建立到字符串然後將該字符串提供給MySQL API總是很好的。這使您可以輕鬆訪問便捷的調試技術。如果你仍然有問題試試這個。

$id = 1; 
$query = "SELECT * FROM `topics1` WHERE `id`={$id}"; 
echo ": Attempting Query -> {$query}<br />"; 

$res = mysql_query($query, $dblink); 
if($res <= 0) 
    die("The query failed!<br />" . mysql_error($dblink) . "<br />"); 

$cnt = mysql_num_rows($res); 
if($cnt <= 0) 
{ 
    $query = "SELECT `id` FROM `topics1`"; 
    echo "No records where found? Make sure this id exists...<br />{$query}<br /><br />"; 

    $res = mysql_query($query, $dblink); 
    if($res <= 0) 
     die("The id listing query failed!<br />" . mysql_error($dblink) . "<br />"); 

    while($row = mysql_fetch_assoc($res)) 
     echo "ID: " . $row['id'] . "<br />"; 
} 

這將至少讓你通話之間監視,看看你的查詢實際上看起來像什麼MySQL的說一下,如果一切都失敗了確保你正在尋找的ID確實存在。