PHP URL编码名称并将其存储在URL中,检索名称并在MYSQLi中搜索

时间:2016-05-27 14:13:20

标签: php mysql mysqli

我有一个php页面,它输出所有创建的页面(位于数据库中),每个页面链接到一个新页面,该页面将包含该页面的所有内容。

我想将页面的名称解析为URL,以便我可以检索它并搜索数据库以查找在数据库中使用该名称的所有记录,我已经能够通过解析行ID来实现这一点但是我想用页面名称来做。

这是我的代码输出所有页面链接并在URL中存储'name'的值:

$res = $conn->query("SELECT * FROM pages ORDER BY id ASC");
while($row=$res->fetch_array())
{

    echo '<a href="page.php?name=' . urlencode($row['name']) . '">' . ucfirst($row['name']) . '</a>' . "<br>";

} 

这是我想要检索'name'值的页面,并在数据库中搜索包含'name'的记录,该记录现在存储在$ page变量中

include_once 'db.php';

$page = urldecode($_GET['name']);

echo $page;

// LOAD UP THE CORRECT PAGE BY Page NAME 

$res = $conn->query("SELECT * FROM pages WHERE name = $page");
$row=$res->fetch_array();

当我回显$ page变量时,它确实显示了正确的名称,所以我不知道为什么我收到此错误:

  

致命错误:未捕获错误:在/Applications/XAMPP/xamppfiles/htdocs/newpage/page.php:12中调用boolean上的成员函数fetch_array()堆栈跟踪:/ Applications / XAMPP中引发#0 {main}第12行/xamppfiles/htdocs/newpage/page.php

感谢您的任何帮助

1 个答案:

答案 0 :(得分:3)

错误表示您在查询中有错误。可能是因为缺乏&#39; sql中的字符串必须如下所示:

$conn->query("SELECT * FROM pages WHERE name = '$page'");

ps:您还应该将escape值放入查询中。阅读sql injections