PHP不显示MySQL数据库的结果

时间:2012-06-04 15:01:58

标签: php mysql sql

我正在尝试显示由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; 

}

如您所见,我将get数据作为$ id传递给返回结果的方法。但是没有任何东西被退回。目前有三个条目,如果我将SQL语句中的$ id更改为1,2或3,它将显示相应的数据,但它不能与$ id变量一起使用。

网址的确以正确的信息结尾?id = 1。

请原谅我,如果这是愚蠢的事情,我已经被困在这几个小时了!!

5 个答案:

答案 0 :(得分:2)

所有这些答案都可以解决您的问题,但没有人提及或阻止SQL Injection

在你的情况下,我建议(假设articleID是一个整数字段)。

$sql = 'SELECT * FROM tblArticle WHERE tblArticle.articleID LIKE "' . (int)$id . '"';

我也很好奇您为{em> id 字段使用LIKE的原因。

注意:由于您使用的是MySQLi,我建议您查看prepared statements

答案 1 :(得分:1)

$sql = 'SELECT * FROM tblArticle WHERE tblArticle.articleID LIKE "'.$id.'"';

以简单引用转义你的var

答案 2 :(得分:1)

试试这个:

$sql = "SELECT * FROM tblArticle WHERE tblArticle.articleID LIKE '$id'";

$sql = 'SELECT * FROM tblArticle WHERE tblArticle.articleID LIKE "' . $id . '"';

答案 3 :(得分:0)

您需要使用双引号才能让php正确扩展您的变量:)所以请将您的查询更改为

$sql = "SELECT * FROM tblArticle WHERE tblArticle.articleID LIKE '$id'";

答案 4 :(得分:0)

更改

'SELECT * FROM tblArticle WHERE tblArticle.articleID LIKE "$id"'

"SELECT * FROM tblArticle WHERE tblArticle.articleID LIKE '$id'" 

只有当变量介于双引号"

之间时,才会对变量进行评估