MySQL中的WHERE子句用于选择所有

时间:2017-11-05 16:44:51

标签: php mysql sql where

我在PHP中有一个脚本,该脚本使用Mysql&来自Select数据库中选择数据。 Where条款。

$lrn= "PU2017LN11K";
$stmt = $user_home->runQuery('SELECT * FROM mcq WHERE LRN = :crn ORDER BY LRN,Sr ASC ');
$stmt->bindParam(':crn',$lrn);
$stmt->execute();

现在如何编写代码脚本,以便它使用LRN从所有WHERE LRN = :crn中进行选择。

我试过了:

$lrn= "*";
$stmt = $user_home->runQuery('SELECT * FROM mcq WHERE LRN = :crn ORDER BY LRN,Sr ASC ');
$stmt->bindParam(':crn',$lrn);
$stmt->execute();

但它没有显示任何结果!

如果我想显示所有结果,可以轻松跳过WHERE子句,但是 $lrn的值将由$_GET方法定义。

3 个答案:

答案 0 :(得分:1)

处理此问题的正常方法是:

$lrn= "*";
$stmt = $user_home->runQuery('SELECT * FROM mcq WHERE LRN = :crn OR :crn = \'*\' ORDER BY LRN, Sr ASC ');

或者,您可以使用LIKE

$lrn = "%";
$stmt = $user_home->runQuery('SELECT * FROM mcq WHERE LRN LIKE :crn ORDER BY LRN, Sr ASC ');

答案 1 :(得分:0)

您想要所有行,不要使用where子句。或者,如果您必须使用where(代码中的某些内容或思考/设计需要它),那么您也可以说"其中1" (就像phpMyAdmin一直在做的事情一样,无论什么原因)。

答案 2 :(得分:0)

将此用作where子句:

WHERE LRN = CASE WHEN :crn = '*' THEN LRN else :crn END

当提供的:crn是' *'你将获得所有记录。