2016-10-04 121 views
0

我有這個代碼在某處被翻錄,但我有問題試圖使用WHERE子句過濾結果。我想要做的是在語句中包含一個WHERE子句,如WHERE name ='John',以便僅獲取與人名相關的特定記錄,而不是像當前代碼那樣獲取所有人的全部結果。這裏是我的代碼:使用WHERE子句過濾SQL SELECT語句

$query=mysql_query("SELECT @rownum := @rownum + 1 AS urutan,t.* 
FROM customer t, 
(SELECT @rownum := 0) r"); 
$data = array(); 
while($r = mysql_fetch_assoc($query)) { 
$data[] = $r; 
} 
$i=0; 
+0

你可以寫「選擇.. 。,t。* FROM customer t where name ='John''...你在用什麼語言? PLZ標記它 – Zeina

+1

這顯然不是Oracle。我已經移除了標籤。 –

+2

爲什麼你不能簡單地使用where子句? – e4c5

回答

0

WHERE子句屬於底:

$query = mysql_query("SELECT @rownum := @rownum + 1 AS urutan, t.* 
FROM customer t, 
(SELECT @rownum := 0) r WHERE t.name = 'John'"); 
+0

你搖滾兄弟!像魔術一樣工作!我在聲明的末尾嘗試了相同的代碼,但是我從來沒有這樣做過。在列名的開頭。什麼是「t」?在聲明中的意思是? –

+0

實際上它不應該有所作爲。你給了'customer'表的別名't'。您還正在創建一個即時呼叫'r'的單記錄表。因此,由於查詢中有多個表,我使用表限定符來表示列所在的位置.'name'屬於't',所以它是't.name'。 –

+0

我現在明白了。非常感謝! –

1

你真的不應該使用mysql_ *函數

$query = "SELECT @rownum := @rownum + 1 AS urutan,t.* 
FROM customer t, 
(SELECT @rownum := 0) r WHERE t.name=?" 

$stmt = mysqli_prepare($link, $query) 
mysqli_stmt_bind_param($stmt,"s","Eric"); 
mysqli_stmt_execute($stmt); 
+0

@ e4c5 ...是啊... mysql_被貶低,就像我在我原來的帖子中提到的那樣,我只是簡單地粘貼了一切,因爲它是從我從它取得的片段中提取的。在我的工作環境中,我已經轉向mysqli_。我只有理解PDO的問題,但我會繼續學習。非常感謝你的回覆。 –