在mysqli_query中格式化

时间:2016-12-05 00:29:41

标签: php mysql database formatting

我正在使用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')

所以看起来由于某种原因,我的冠军变量从未收到任何东西。这是因为在最初调用它时,它被称为“冠军”而不是“冠军”。

1 个答案:

答案 0 :(得分:0)

在找到我之前出错的地方后,看来这段代码:




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

&#xA ;

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