我在让我的变量在MySQL查询中工作时遇到了一些麻烦。我以前做过这个,但由于某种原因它不起作用。我可能错过了一些东西,但无法弄清楚任何人都可以帮助我吗?
我的代码
$cat = "Fashion";
$article = db::getInstance()->query("SELECT * FROM articles WHERE category = $cat ORDER BY views");
if($article->results(){
echo 'success!';
}
else{
echo 'no';
}
我应该让'成功'得到回应,但我得到'不';时尚是我的数据库中的一个类别所以不知道为什么这对我不起作用。
答案 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语句中遗漏了另一个)
。