使用WHERE子句过滤SQL SELECT语句

问题描述:

我有这个代码在某处被翻录,但我有问题试图使用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

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

我现在明白了。非常感谢! –

你真的不应该使用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的问题,但我会继续学习。非常感谢你的回复。 –