Php 尝试进行选择,其中我的类别可以是我的类别表中的所有类别
我试着在我的表格中选择一个帖子,我的类别可以是动作、冒险、喜剧和科幻 首先,我想知道在where子句中,sql中是否有类似“All”的内容:Php 尝试进行选择,其中我的类别可以是我的类别表中的所有类别,php,sql,Php,Sql,我试着在我的表格中选择一个帖子,我的类别可以是动作、冒险、喜剧和科幻 首先,我想知道在where子句中,sql中是否有类似“All”的内容: $where = 'ALL'; $limit = '16'; SELECT * FROM posts WHERE category = '$where' ORDER BY visits ASC LIMIT $limit 但是我没有看到任何关于它的信息,所有这些信息都不一定有效,所以我试着写下我所有的分类: $where = 'action OR cate
$where = 'ALL';
$limit = '16';
SELECT * FROM posts WHERE category = '$where' ORDER BY visits ASC LIMIT $limit
但是我没有看到任何关于它的信息,所有这些信息都不一定有效,所以我试着写下我所有的分类:
$where = 'action OR category = adventure OR category = comedy OR category= scifi';
$limit = '16';
SELECT * FROM posts WHERE category = '$where' ORDER BY visits ASC LIMIT $limit
但它不起作用,因为我需要在类别名称中使用“”,但在我的示例中如何做到这一点
如何在我的类别中使用引号:
$where = 'action OR category = adventure OR category = comedy OR category= scifi';
此示例的完整代码:
if($type == 'action'){
$limit = '0,3';
$where = "category = 'action'";
}
else if($type == 'adventure'){
$limit = '0,5';
$where = "category = 'adventure'";
}
else if($type == 'comedy'){
$limit = '0,3';
$where = "category = 'comedy'";
}
else if($type == 'scifi'){
$where = "category = 'accao' OR category = 'adventure' OR category = 'comedy' OR category = 'scifi'";
$limit = '16';
}
$posts=
mysql_query("SELECT * FROM posts WHERE '$where' ORDER BY visits ASC LIMIT $limit")
or die(mysql_error());
如果你对每一个类别都做了定义,那么就不要定义WHERE。容易的。此外,它不起作用,因为每个值都缺少单引号 没有定义在何处不进行比较,因此将返回每一行
SELECT * FROM posts ORDER BY visits ASC LIMIT $limit
此外,修复了我误解您时的代码:
$where = "category = 'action' OR category = 'adventure' OR category = 'comedy' OR category= 'scifi'";
$limit = '16';
$sql = "SELECT * FROM posts WHERE $where ORDER BY visits ASC LIMIT $limit";
首先,如前所述,如果所有可能的值都正常,那么为查询设置条件是没有意义的 其次,我为您的代码添加了一个可能的改进:
<?php
$genres = array(
"action" => "0,3",
"adventure" => "0,5",
"comedy" => "0,3",
"scifi" => "16"
);
$type = "action";
if(!in_array($type, array_keys($genres))) {
//handle invalid input
}
$query = sprintf("SELECT * FROM `posts` WHERE `category` = '%s' LIMIT %s", $type, $genres[$type]);
echo $query;
?>
谢谢,但是对于您的解决方案,我有一个错误:您的SQL语法有一个错误;检查与您的MySQL服务器版本对应的手册,以了解在第1行的“action”或category='adventure”或category='Comicle'或category='scifi'附近使用的正确语法。我将我的问题更新为我的完整代码,以了解我遇到的问题,也许更容易看到发生了什么!您可能应该花一些时间阅读SQL server的文档。这需要一点时间,但在未来你将节省更多的时间,而不是浪费时间发明完全荒谬的东西。