我要做的是编写一个获取所有行的查询,但是将一个复合主键匹配的特定值匹配返回列表的顶部。
但是,在MySQL和PHP方面,我是一个巨大的N00B。实际上,这是我第一次尝试使用SET
并执行SELECT FROM WHERE ORDER BY
或INSERT INTO WHERE
以外的其他查询。
我尝试了以下代码,但是我收到的致命错误读取SQLSTATE[42S02]: Base table or view not found: 1109 Unknown table
,我认为这与第一个execute
语句有关。我以前从未 SET
一个变量,所以我不知所措...
include "includes/connect_to_database.php";
$sql = "SET @url = " . $_SERVER['HTTP_HOST'];
$stmt = $connection->prepare($sql);
$stmt->execute();
$sql = "SELECT sld, tld, ask, floor FROM table ORDER BY CASE WHEN CONCAT (sld, '.', tld) = @url THEN 0 ELSE 1 END, CONCAT (sld, '.', tld)";
$stmt = $connection->prepare($sql);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
我要去哪里?
如果您一次使用变量@url
,则可以像这样做
include "includes/connect_to_database.php";
$sql = "SELECT sld, tld, ask, floor FROM table ORDER BY CASE WHEN CONCAT (sld, '.', tld) = :host THEN 0 ELSE 1 END, CONCAT (sld, '.', tld)";
$stmt = $connection->prepare($sql);
$stmt->execute([':host' => $_SERVER['HTTP_HOST']]);
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);