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

WHERE clause in MySQL for selecting all

我在 PHP 中有一个脚本,它使用 Select & Where 子句从 Mysql 数据库中选择数据。

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

现在如何使用 WHERE LRN = :crn.

编写代码脚本,以便它从所有 LRN 中进行选择

我试过了:

$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 方法定义。

您需要所有行,不要使用 where 子句。或者,如果您 必须 使用 where(代码中的某些内容或 thinking/design 需要它),那么您也可以说 "where 1" 之类的内容(例如 phpMyAdmin无时无刻不在做事。

正常的处理方式是:

$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 ');

将其用作您的 where 子句:

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

这样,当提供的 :crn 为“*”时,您将获得所有记录。