我正在使用PHP来执行对数据库的查询。我已经成功地使用该程序执行了许多查询,但是最近的一个查询给了我麻烦。原始SQL查询如下:
SELECT Champion, RunnerUp
FROM playoffs
WHERE Champion = "Detroit Red Wings"
AND (RunnerUp = "Montreal Canadiens" OR RunnerUp = "New York Rangers");
成功运行并在HeidiSQL中直接在数据库中使用时产生正确的输出。我尝试在程序中实现它如下,交换PHP变量的实际团队名称:
$result = mysqli_query($link, "SELECT Champion, RunnerUp
FROM playoffs
WHERE Champion = '$champion'
AND (RunnerUp = '$RunnerUp' OR RunnerUp = '$RunnerUp2')") ;
在这个版本中,似乎嵌入的括号组没有被识别,而是看起来是引用的一部分。这个版本没有输出。
我修改如下:
$result = mysqli_query($link, "SELECT Champion, RunnerUp
FROM playoffs
WHERE Champion = '$champion'
AND RunnerUp = '$RunnerUp' OR RunnerUp = '$RunnerUp2'") ;
删除第二组括号,它会执行但不会产生所需的结果,因为逻辑读取的方式不同,每当$ champion和$ RunnerUp匹配时或每当$ RunnerUp2为亚军时给我元组。反正有没有像我最初使用PHP那样执行这个语句?
更新:将查询放入变量后,如下所示:
$query = "SELECT Champion, RunnerUp
FROM playoffs
WHERE Champion = '$champion'
AND (RunnerUp = '$RunnerUp' OR RunnerUp = '$RunnerUp2')";
并回应它,我得到了输出
SELECT Champion, RunnerUp FROM playoffs WHERE Champion = '' AND (RunnerUp = 'Montreal Canadiens' OR RunnerUp = 'Toronto St. Patricks')
所以看起来由于某种原因,我的冠军变量从未收到任何东西。这是因为在最初调用它时,它被称为“冠军”而不是“冠军”。
答案 0 :(得分:0)
在找到我之前出错的地方后,看来这段代码:


 $ query =“SELECT Champion,RunnerUp
 FROM playoffs&# xA; WHERE Champion ='$ champion'
 AND(RunnerUp ='$ RunnerUp'或RunnerUp ='$ RunnerUp2')“;


&#xA ; 实际上会工作。尽管如上所述,将查询添加到变量并调用它会更清晰。