Php 查询以获取同一表中的2列
我完全被这段代码卡住了,希望有人能帮我。我有一个数据库,有一个名为“pages”的表,它有5列:id、file\u name link\u name、category、main\u cat。不确定这是否重要,但main_cat的类型为tinytext,文件名为varcharPhp 查询以获取同一表中的2列,php,mysql,Php,Mysql,我完全被这段代码卡住了,希望有人能帮我。我有一个数据库,有一个名为“pages”的表,它有5列:id、file\u name link\u name、category、main\u cat。不确定这是否重要,但main_cat的类型为tinytext,文件名为varchar id | file_name | link_name | category | main_cat 1 | books | Books | books | 1 2 | fiction
id | file_name | link_name | category | main_cat
1 | books | Books | books | 1
2 | fiction | Fiction | books | 2
3 | non-fiction | Non-Fiction | books | 2
4 | music | Music | music | 1
5 | alternative | Alternative | music | 2
6 | country | Country | music | 2
在我的导航菜单(下面的代码)中,我希望列出所有主目录(1),然后在下面显示子页面,即手册目录(2)。这是我的代码,现在,我已经尝试了很多不同的方法,包括内部连接和左连接,但不管怎样,我一直收到一个错误,上面写着“警告:mysqli_fetch_assoc()期望参数1是mysqli_result,布尔值在…中给出。”
-
我认为这与您的第二个查询有关,您可能将其格式化错误。。。我不是专家,但如果我错了,也许其他人可以编辑
由此:
$query = "SELECT * FROM pages WHERE main_cat = 2 AND category = {$mainpage["file_name"]}";
为此:
$mainfilename = $mainpage['file_name'];
$query = "SELECT * FROM pages WHERE main_cat = 2 AND category = $mainfilename";
我认为这与您的第二个查询有关,您可能将其格式化错误。。。我不是专家,但如果我错了,也许其他人可以编辑 由此:
$query = "SELECT * FROM pages WHERE main_cat = 2 AND category = {$mainpage["file_name"]}";
为此:
$mainfilename = $mainpage['file_name'];
$query = "SELECT * FROM pages WHERE main_cat = 2 AND category = $mainfilename";
检查您是否连接了正确的数据库,并且您的查询在语法上是否正确
$main\u pages=mysqli\u查询($conn,$query)如果$conn
设置不正确或查询语法错误,code>将返回布尔值
因此,当您启动mysqli\u fetch\u assoc($main\u pages)
时,它会抛出
“警告:mysqli_fetch_assoc()要求参数1为mysqli_结果,布尔值在…”
正如,
$main\u pages
是布尔值。检查您是否连接了正确的数据库,以及查询的语法是否正确
$main\u pages=mysqli\u查询($conn,$query)如果$conn
设置不正确或查询语法错误,code>将返回布尔值
因此,当您启动mysqli\u fetch\u assoc($main\u pages)
时,它会抛出
“警告:mysqli_fetch_assoc()要求参数1为mysqli_结果,布尔值在…”
正如,
$main\u pages
是布尔值。这会让你心痛:
$query = "SELECT * FROM pages WHERE main_cat = 2 AND category = {$mainpage["file_name"]}";
问题是文件名
周围的“
字符被解释为字符串的结尾,PHP的行为不可预测。换句话说,PHP看到了以下情况:
$query = "SELECT * FROM pages WHERE main_cat = 2 AND category = {$mainpage["file_name"]}";
// ^ start string ^ end ^s ^end again
请尝试以下选项之一:
$query = "SELECT * FROM pages WHERE main_cat = 2 AND category = '{$mainpage['file_name']}'";
$query = "SELECT * FROM pages WHERE main_cat = 2 AND category = '".$mainpage["file_name"]."'";
另外,请注意变量周围的引号——除非file\u name
实际上是一个数字,否则需要用引号将数据括起来
最后,这可能不言而喻,但您确实需要在这里使用准备好的语句。这会让您心痛:
$query = "SELECT * FROM pages WHERE main_cat = 2 AND category = {$mainpage["file_name"]}";
问题是文件名
周围的“
字符被解释为字符串的结尾,PHP的行为不可预测。换句话说,PHP认为:
$query = "SELECT * FROM pages WHERE main_cat = 2 AND category = {$mainpage["file_name"]}";
// ^ start string ^ end ^s ^end again
请尝试以下选项之一:
$query = "SELECT * FROM pages WHERE main_cat = 2 AND category = '{$mainpage['file_name']}'";
$query = "SELECT * FROM pages WHERE main_cat = 2 AND category = '".$mainpage["file_name"]."'";
另外,请注意变量周围的引号——除非file\u name
实际上是一个数字,否则需要用引号将数据括起来
最后,这可能不言而喻,但您确实需要在这里使用准备好的语句。您多次调用mysqli_fetch_assoc,哪一个不起作用,第一个?是的,我不需要调用两次,它们是两个不同的查询,我先查询主页,然后查询子页。子页面(第二个)不工作。谢谢$conn在哪里定义的?$conn很好,它在另一个文件中。如果我删除category={$mainpage[“file_name”]},我总是会得到$main_pages的结果,只有在删除category={$mainpage[“file_name”]}的情况下才会得到$sub_pages的结果。但这应该是可行的……我不明白为什么我不能查询数据库来提取category=file_name的$sub_pages。正确的(这里是SQL语句)比任何特别的模式和示例数据格式都更有用。请使用
CREATE TABLE
和INSERT。。。的值
。所需的结果不需要以示例代码的形式呈现,因为结果是代码的输出,而不是代码本身。您多次调用mysqli_fetch_assoc,哪一个不起作用,第一个?是的,我不需要调用两次,它们是两个不同的查询,我对主页进行查询,然后对子页进行查询。子页面(第二个)不工作。谢谢$conn在哪里定义的?$conn很好,它在另一个文件中。如果我删除category={$mainpage[“file_name”]},我总是会得到$main_pages的结果,只有在删除category={$mainpage[“file_name”]}的情况下才会得到$sub_pages的结果。但这应该是可行的……我不明白为什么我不能查询数据库来提取category=file_name的$sub_pages。正确的(这里是SQL语句)比任何特别的模式和示例数据格式都更有用。请使用CREATE TABLE
和INSERT。。。的值
。所需的结果不需要以示例代码的形式呈现,因为结果是代码的输出,而不是代码本身。谢谢。如果连接不正确,我将不会得到任何结果,但我确实得到$main_页面的结果。我没有得到的是$sub_页面的结果,其中category=file\u name…如果您的连接正常,那么尝试打印查询并在phpmyadmin中激发,问题将被跟踪。将第二个查询更改为“从main_cat=2和category like的页面中选择*”$主页[“文件名]。”;谢谢如果连接不正确,我将不会得到任何结果,但我确实得到$main_页面的结果。我没有得到的是$sub_页面的结果,其中category=file\u name…如果您的连接正常,那么尝试打印查询并在phpmyadmin中激发,问题将被跟踪。将第二个查询更改为“从main_cat=2和category like的页面中选择*”$主页[“文件名]。”;不确定该如何编写,但尝试执行我在上面编辑的操作…?第一个选项需要在数据周围加引号,并使用“
I