2011-07-31 33 views
0

我正在測試一個簡單的員工應用程序並得到這個未知列'mush'in'子句'錯誤。名字欄中有一個名爲'mush'的人。未知列'mush'in'子句'

這裏是我的代碼

<?php 
// Connects to your Database 
mysql_connect("localhost", "myuser", "mypass") or die(mysql_error()) ; 
mysql_select_db("peoplesdb") or die(mysql_error()) ; 

//Retrieves data from MySQL 
$data = mysql_query("SELECT * FROM employees WHERE name = $_GET[name]") or die(mysql_error()); 
echo "<table border=\"1\">"; 
echo "<tr>"; 
echo "<th>First Name:</th>"; 
echo " <td>Last Name</td>"; 
echo "</tr>"; 
echo "<tr>"; 
echo "<th rowspan=\"3\"><img src=\"../about/images/".$data['photo']."\" width=\"205\" height=\"205\" alt=\"\" title=\"\"></th>"; 

echo $data['name']; 
echo "<td>".$data['name'] ."</td>"; 
echo "</tr>"; 
echo "<tr>"; 
echo "<td>".$data['lastname'] ."</td>"; 
echo "</tr>"; 
echo "</table>"; 
?> 

目的是用圖片到表的左側,顯示在表上的細節。 以下是我打過電話應用:

http://localhost:8080/displaymembers.php?name=mush. 

我有一個包含這些列的表:

的姓名,照片,電話,姓氏和出生日期。

有什麼我會出錯,停止顯示的細節?我希望你的幫助。

海倫。

+0

你必須用雪橇犬數據庫工作。 –

回答

2

首先,你需要引用您的輸入,第二你需要轉義:

mysql_query("SELECT * FROM employees WHERE name = '". 
    mysql_real_escape_string($_GET['name']) ."'"); 
+0

感謝您的提示。該錯誤消息現在已停止,但表中似乎沒有顯示任何內容。我看不到任何錯誤消息。是否有任何東西阻止它顯示?我甚至嘗試使用echo $ data ['name'];但是沒有輸出:( –

+0

您需要執行'$ data_array = mysql_fetch_assoc($ data);' - 第一行將放在'$ data_array'中如果您期望多行,您應該使用'while()循環 – Jonathon

+0

感謝@Jonny Keogh,那真是太棒了,再次感謝您的驚人幫助。 –

2

您需要用引號括起來 - 例如,

SELECT * FROM employees WHERE name = '{$_GET[name]}' 

我也建議你使用mysql_real_escape_string

$data = mysql_query("SELECT * FROM employees WHERE name = '" . mysql_real_escape_string($_GET['name']) . "';") or die(mysql_error()); 
+0

上面的方法可以正常工作,但會觸發一個警告,'使用未定義的常量名稱 - 假定'名稱'' - 即使用'mysql_real_escape_string($ _ GET ['name'])' –

+0

糟糕。剛剛複製並粘貼 - 沒有意識到引號丟失。 – Jonathon

1

你應該嘗試

$data = mysql_query("SELECT * FROM `employees` WHERE `name` = '".mysql_real_escape_string($_GET['name'])."'") or die(mysql_error()); 

name可用於MySQL的目的保留,我相信這是...