[英]PHP not displaying results from MySQL database
我试图显示由GET数据选择的MySql数据库中的条目。
if (isset($_GET["id"])){
$id=$_GET["id"];
$result = getSelectedBlog($id);
while($row = mysqli_fetch_array($result))
{
extract($row);
?>
<div class="headline"><?php echo $headline ?></div>
<div class="subtitle"><?php echo $subTitle ?></div>
<div class="content"><?php echo $content ?></div>
<?php
}
这是SQL语句:
function getSelectedBlog($id){
$con = mysqli_connect('localhost', 'root', '', 'michaelWebsite') or die('could not connect');
$sql = 'SELECT * FROM tblArticle WHERE tblArticle.articleID LIKE "$id"';
$result = mysqli_query($con, $sql) or die('entry does not exist.:' . mysqli_error($con));
return $result;
}
如您所见,我将获取数据作为$ id传递给返回结果的方法。 但是什么也没有退还。 目前有3个条目,如果我将SQL语句中的$ id更改为1、2或3,它将显示相应的数据,但将无法与$ id变量一起使用。
该URL确实以正确的信息?id = 1结尾。
如果这很愚蠢,请原谅,我已经被这个问题困扰了几个小时了!
所有这些答案都可以解决您的问题,但是没有一个提到或阻止SQL Injection 。
根据您的情况,我建议您(假设articleID
是一个整数字段)。
$sql = 'SELECT * FROM tblArticle WHERE tblArticle.articleID LIKE "' . (int)$id . '"';
我也很好奇为什么您对ID字段使用LIKE
。
注意:由于您使用的是MySQLi,因此建议您查看准备好的语句 。
$sql = 'SELECT * FROM tblArticle WHERE tblArticle.articleID LIKE "'.$id.'"';
用简单的报价转义您的变量
试试这个:
$sql = "SELECT * FROM tblArticle WHERE tblArticle.articleID LIKE '$id'";
或搭配
$sql = 'SELECT * FROM tblArticle WHERE tblArticle.articleID LIKE "' . $id . '"';
您需要使用双引号才能使php正确扩展变量:),因此将查询更改为
$sql = "SELECT * FROM tblArticle WHERE tblArticle.articleID LIKE '$id'";
更改
'SELECT * FROM tblArticle WHERE tblArticle.articleID LIKE "$id"'
至
"SELECT * FROM tblArticle WHERE tblArticle.articleID LIKE '$id'"
仅当变量在双引号之间时才对它们进行评估"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.