php
2014-04-09 49 views 0 likes 
0
<?php 
mysql_connect("localhost", "root", "") or die(mysql_error()); 
mysql_select_db("names") or die(mysql_error()); 

$green = "rose";  

$data = mysql_query("SELECT * FROM freinds2 WHERE name = '"$green"'); 
or die(mysql_error()); 

Print "<table border cellpadding=3>"; 
while($info = mysql_fetch_array($data)) 
{ 
    Print "<tr>"; 
    Print "<th>Name:</th> <td>".$info['name'] . "</td> "; 
    Print "<th>Pet:</th> <td>".$info['pet'] . " </td></tr>"; 
    Print "<th>Color:</th> <td>".$info['fav_color'] . "</td> "; 
    Print "<th>Food:</th> <td>".$info['fav_food'] . " </td></tr>"; 
} 
Print "</table>"; 
?> 

上面的代碼運行正常,直到我試着和 更換名稱= SELECT語句我上面$綠色創建的變量=「玫瑰」。它不會像我把它放在SELECT語句中那樣採用變量。是否有將變量放在select語句中的特殊方法? 非常感謝 吉姆PHP變量...我怎麼辦呢

+0

你的表名拼寫錯誤。 –

+1

你真的應該遠離mysql,使用PDO或MySQLi,因爲我在下面的答案中。您還應該學習如何使用準備好的查詢來防止用戶輸入的變量(如POST/GET等)的SQL注入。 – Devon

回答

3

您需要刪除其他報價:

$data = mysql_query("SELECT * FROM freinds2 WHERE name = '"$green"'); 

成爲

$data = mysql_query("SELECT * FROM freinds2 WHERE name = '$green'"); 

$data = mysql_query("SELECT * FROM freinds2 WHERE name = '" . $green . "'"); 

它還適用於提到的mysql_query已被棄用從PHP 5.5.0開始,你應該看看更新您的代碼使用的MySQLi或PDO_MYSQL

+0

此外,如果您想保留好引號 – morissette

+2

,您還可以連續輸入,在最後一次單引號後忘記了雙引號 – meda

+0

固定。謝謝!! – morissette

1

嘗試這個 - >

$data = mysql_query("SELECT * FROM freinds2 WHERE name = '$green'"); 
+0

這應該是您需要的人 – SuperDJ

0

你應該從MySQL獲得遠爲MySQL的API已被棄用。

您可以使用PDO或MySQLi,我更喜歡PDO,因爲它不僅僅支持MySQL。

$db = new PDO('mysql:host=localhost;dbname=testdb;charset=utf8', 'username', 'password'); 

要使用標準的查詢,你可以這樣做:

$stmt = $db->query("SELECT * FROM freinds2 WHERE name = '".$green."'"); 

但對於大多數的變量,尤其是用戶inputed領域,你應該使用準備好的查詢。

$stmt = $db->prepare("SELECT * FROM freinds2 WHERE name = ?"); 
$stmt->execute(array($green)); 

該查詢不受SQL注入的保護。

要獲得多個結果,你可以運行:

while ($info = $stmt->fetch()) { 

    Print "<tr>"; 
    Print "<th>Name:</th> <td>".$info['name'] . "</td> "; 
    Print "<th>Pet:</th> <td>".$info['pet'] . " </td></tr>"; 
    Print "<th>Color:</th> <td>".$info['fav_color'] . "</td> "; 
    Print "<th>Food:</th> <td>".$info['fav_food'] . " </td></tr>"; 

} 

這裏是PDO一個很好的教程:http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers

+0

非常感謝這一點我正在通過教程 – user3480507

相關問題