2013-03-06 117 views
0

當我寫死我這樣的查詢,查詢返回正確的結果:MySQL查詢不與PHP變量工作

$data = mysql_query("SELECT * FROM $table_name WHERE post_ID = '1'") or 
       die(mysql_error()); 

但是當我使用這樣的PHP變量,查詢不返回任何結果:

$data = mysql_query("SELECT * FROM $table_name WHERE post_ID = '$ID'") or 
       die(mysql_error()); 

我已經初始化的變量上面如下:

$ID = $_POST[ID]; 

和可變屢試不爽有這樣的說法:

$sql = "INSERT INTO $table_name (post_ID, user_name, comments) 
    VALUES ('$ID','$name', '$comment')"; 

所以我不明白爲什麼變量將正確地插入到我與以前的聲明SQL表,但不與查詢工作。我在sql_table中爲post_ID字段使用了一個varchar數據類型。

+2

[**請不要在新代碼**中使用'mysql_ *'函數](http://bit.ly/phpmsql)。他們不再被維護[並且被正式棄用](http://j.mp/XqV7Lp)。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。如果你選擇PDO,[這裏是一個很好的教程](http://j.mp/PoWehJ)。 – 2013-03-06 05:46:55

+1

它應該是'$ ID = $ _POST ['ID'];'不.. ..? – MatRt 2013-03-06 05:47:22

+0

$ _POST [ID];仍然認爲它是一個字符串,提供的ID沒有被定義爲一個常量。 (請注意它會引發警告級別的錯誤)所以不一定,但你可能是正確的。 – Mechzeit 2013-03-06 05:49:05

回答

0

試試這個

$ID = $_POST['ID']; 
$data = mysql_query("SELECT * FROM ".$table_name." WHERE post_ID = '".$ID."'") or 
     die(mysql_error()); 
+0

沒有工作 – user2138541 2013-03-06 06:02:07

+0

可以確保您的$ _ POST [「ID」]不爲空或返回一個有效的價值? – 2013-03-06 06:10:27

+0

的$ _ POST [ID]時返回適當的值到SQL表 – user2138541 2013-03-06 06:35:35

0

能不能請你,而不是直接報價

$data = mysql_query("SELECT * FROM $table_name WHERE post_ID =$ID") or 
       die(mysql_error()); 
+0

這將導致一個錯誤:你在你的SQL語法錯誤;檢查對應於你的MySQL服務器版本使用附近的「」在1號線 – user2138541 2013-03-06 06:06:01

+1

請打印$ ID的值正確的語法手冊是有它的任何值或不 – 2013-03-06 06:07:44

+0

沒有什麼是打印的,但正確的值被輸入到我的sql表中。所以這沒有任何意義。 – user2138541 2013-03-06 06:14:51

0

PHP解釋器,如果你把它內「」不分析的變量。因此,嘗試刪除單引號,即使用的,而不是 '$ ID'

$data = mysql_query("SELECT * FROM $table_name WHERE post_ID = $ID") or die(mysql_error()); 
+0

這會導致錯誤 – user2138541 2013-03-06 06:05:21

+0

您的SQL語法有錯誤;檢查與你的MySQL服務器版本相對應的手冊,在第1行的''附近使用正確的語法。 – user2138541 2013-03-06 06:08:11

+0

@Mhhir在「...'$ ID'」中,字符串用雙引號分隔,變量替換完成。單引號只是字符串的一部分,並不會阻止變量替換(如'...「$ ID」') – 2013-03-06 06:17:29

0

嘗試只需$ ID使用此

<?php 
$query = "SELECT * FROM $table_name WHERE post_ID = "$ID; 
$data = mysql_query($query); 
?> 

雖然,你必須使用庫MySQLi而不是MySQL的功能。

快樂編碼!

0

確保首先設置$_POST['ID']

$ID = isset($_POST['ID']) ? $_POST['ID'] : <some_values>; #for debugging purpose 

然後執行:

$data = mysql_query("SELECT * FROM $table_name WHERE post_ID = '".$ID."'") or 
     die(mysql_error()); 
+0

變量沒有被設置...現在我不知道我的SQL表是如何被填充.. – user2138541 2013-03-06 06:46:54

+0

嘗試檢查你的HTML表單中輸入值。也許你錯過了那部分。 – foxns7 2013-03-06 06:53:17

1

下面是一些問題的代碼。因爲你的PHP變量不會在MySQL查詢中工作。所以你必須把變量傳遞給它。用一個單引號,你可以像這樣傳遞它。和

$ data = mysql_query(「SELECT * FROM'$ table_name'WHERE post_ID ='1'」)或 die(mysql_error());

謝謝