PHP变量在MySQL查询中不起作用

时间:2016-03-21 17:19:04

标签: php mysql

我在让我的变量在MySQL查询中工作时遇到了一些麻烦。我以前做过这个,但由于某种原因它不起作用。我可能错过了一些东西,但无法弄清楚任何人都可以帮助我吗?

我的代码

$cat = "Fashion"; 

$article = db::getInstance()->query("SELECT * FROM articles WHERE category = $cat ORDER BY views");

if($article->results(){
echo 'success!'; 
}
else{
echo 'no';
}

我应该让'成功'得到回应,但我得到'不';时尚是我的数据库中的一个类别所以不知道为什么这对我不起作用。

2 个答案:

答案 0 :(得分:2)

$article = db::getInstance()->query("SELECT * FROM articles WHERE category = $cat ORDER BY views"

这一行缺少右括号和分号。

此外,变量用单引号括起来。

将该行更改为:

$article = db::getInstance()->query("SELECT * FROM articles WHERE category = '$cat' ORDER BY views");

您的if语句在语法上也是错误的。关闭括号缺失:

if($article->results(){

冒号而不是分号:

echo 'no':

整个部分应如下所示:

if($article->results()) {
    echo 'success!'; 
} else {
    echo 'no';
}

通过一些清理和ternary operators,它看起来很简单:

echo $article->results() ? "success!" : "no";

答案 1 :(得分:1)

首先,我希望您意识到这很容易受到SQL注入攻击,除非您完全控制输入变量。

其次,变量应该在它周围有单引号,即

$article = db::getInstance()->query("SELECT * FROM articles WHERE category = '$cat' ORDER BY views");

注意我还在该行的末尾添加了缺少的);

最后,您似乎在if语句中遗漏了另一个)