php - 用于 SEO slug 的 PHP 中的 MySQL 错误

标签 php mysql seo

我有一个名为 details.php 的页面。这是它的代码:

<?
$id = $_GET['id'];
?>

<?
$q = mysql_query("SELECT * FROM `db` WHERE id = $id ");
while($db = mysql_fetch_array($q)) {
?>

<p><?=$db['title']?> <br /> <?=$db['desc']?></p>
<? } ?>

因此,当我在浏览器中打开/details.php?id=1 时,它会起作用。段落标签显示了 id 1 的信息。所以...

如果我将 id 替换为 title,它将如下所示:

<?
$title = $_GET['title'];
?>

<?
$q = mysql_query("SELECT * FROM `db` WHERE title = $title ");
while($db = mysql_fetch_array($q)) {
?>

<p><?=$db['title']?> <br /> <?=$db['desc']?></p>
<? } ?>

如果我在浏览器中键入/details.php?title=M(M 是 mysql 中的现有列),它不起作用。我在段落中收到此错误:警告:mysql_fetch_array() 期望参数 1 为资源,第 51 行 C:\xampp\htdocs\mario\game.php 中给出的 bool 值

我哪里错了?

最佳答案

尝试

$q = mysql_query("SELECT * FROM `db` WHERE title = '" . $title . "'");

$title 是一个字符串,所以在查询中你必须用单引号将它包起来

PHP 5.5.0 起,此 (mysql_*) 扩展已弃用,并将在未来删除。相反,应该使用 MySQLiPDO_MySQL 扩展。切换到 PreparedStatements 可以更好地抵御 SQL 注入(inject)攻击!

关于php - 用于 SEO slug 的 PHP 中的 MySQL 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22385142/

相关文章:

php - 尽管使用 html_entity_decode MySQL 引号还是乱码

php - mysqli_fetch_assoc()需要参数/调用成员函数bind_param()错误。如何获取并修复实际的mysql错误?

c# - C# 中的 MySQL 查询命令 SELECT 不返回任何内容

seo - 如何避免重复的站点地图内容?

php - SQL ORDER BY date DESC 不返回最后一条记录

php - 将一个图像放在另一个图像上

php - 调用 WAMP 成员函数 query()

mysql - 创建事件时我的语法有什么问题? phpmyadmin

video - 如何使用 VideoJS 在搜索引擎上获取视频预览?

angular - 部署后从 URL 中删除 # 不起作用 - HTTP 404