繁体   English   中英

PHP不显示MySQL数据库的结果

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM