2012-10-21 37 views
3

我有以下結構的數據庫:的MySQL - 通過ID獲取從列中的值在PHP

id msg 
1 'Hello' 
2 'Bye' 

,我需要得到的「ID」,「味精」的價值。

這是我的嘗試:

$text = mysql_query("SELECT msg FROM text WHERE text (id) ='$msg_num'"); 

但它不工作:( 你有建議 感謝

回答

7

刪除text

$result = mysql_query("SELECT msg FROM text WHERE id ='$msg_num'"); 
while ($row = mysql_fetch_array($result)) 
{ 
    $text = $row['msg']; 
} 

你的代碼是SQL Injection弱勢請閱讀下面的文章,

How can I prevent SQL injection in PHP?

+0

'mysql_query'返回資源而不是文本'msg'。如果需要文本值,則需要獲取。 –

3

變化

mysql_query("SELECT msg FROM text WHERE text (id) ='$msg_num'"); 

mysql_query("SELECT msg FROM text WHERE id ='$msg_num'"); 

這種類型的查詢可能是MySQL Injection攻擊的原因。使用準備好的語句停止使用第一階次注入很好。

1)的mysqli

2)PDO

+0

感謝。我得到類似「資源ID#15」的東西,我需要裏面的值。建議? – lorussian

+0

您需要使用mysql_fetch_array()從資源獲取數據 – GBD

+0

使用mysql_fetch_array($ result) –

2
select id from text where id = '$msg_num' 

這個查詢中的不同之處在於它選擇列。沒有名爲「msg」的列,即值。

編輯:對不起,讀表錯誤(橫向)。

+0

+1在這裏刪除'text' WHERE文本(id)' –

1

語法錯誤。

$text = mysql_query("SELECT msg FROM text WHERE text (id) ='$msg_num'"); 

應該是:

$text = mysql_query("SELECT msg FROM text WHERE id='$msg_num'"); 

您可以使用mysql_error()診斷這樣的事情。

1
$text = mysql_query("SELECT msg FROM text WHERE id ='$msg_num'") or die(mysql_error());