我有一系列链接,可将信息传递到新页面以运行 MySQL 查询。这是源代码的链接之一:
<a class="bloglink" href="parknews.php?tpf_news.park_id=5">
这是生成链接的代码:
<a class="bloglink" href="parknews.php?tpf_news.park_id=<?php echo $row2['park_id'];?>">
<?php echo $row2['name']; ?>
</a>
使用该信息的查询位于此处:
$park_id = $_GET['tpf_news.park_id'];
$sql = 'SELECT headline, story, DATE_FORMAT(date, "%d-%M-%Y") AS date, name
FROM tpf_news
INNER JOIN tpf_parks ON tpf_news.park_id = tpf_parks.park_id WHERE tpf_news.park_id = $park_id ORDER BY date DESC' ;
这会导致显示此错误:
Error fetching news: SQLSTATE[42S22]: Column not found: 1054 Unknown column '$park_id' in 'where clause'
我不明白为什么它不起作用。如果在查询中我将 WHERE tpf_news.park_id = $park_id
替换为 WHERE tpf_news.park_id = 6
(或任何其他数字),则效果很好。
有什么想法吗?
最佳答案
当字符串用引号引起来时,不会对变量进行插值。所以你需要使用双引号代替:
$sql = "SELECT headline, story, DATE_FORMAT(date, '%d-%M-%Y') AS date, name
FROM tpf_news
INNER JOIN tpf_parks ON tpf_news.park_id = tpf_parks.park_id WHERE tpf_news.park_id = $park_id ORDER BY date DESC" ;
或者使用串联:
$sql = 'SELECT headline, story, DATE_FORMAT(date, "%d-%M-%Y") AS date, name
FROM tpf_news
INNER JOIN tpf_parks ON tpf_news.park_id = tpf_parks.park_id WHERE tpf_news.park_id =' . $park_id .' ORDER BY date DESC' ;
仅供引用,您也对SQL injections持开放态度。
关于php - MySQL 查询的 $_GET 导致未知列错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16451511/