2012-06-04 91 views
0

我试图从GET数据选择的MySql数据库中显示一个条目。PHP不显示来自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来返回结果的方法。但是没有任何东西正在退回目前有三个条目,如果我将SQL语句中的$ id更改为1,2或3,它将显示相应的数据,但它不会与$ id变量一起使用。

URL确实以正确的信息?id = 1结束。

请原谅,如果这是愚蠢的,我刚刚坚持了这个好几个小时了!

+0

尝试增加'的var_dump($ ID)只评估;'的函数里面看看它是什么。 –

+0

你的代码中有一个SQL注入漏洞 - 直接在查询中使用'$ _GET ['id']'。阅读[this](http://bobby-tables.com),然后再使用此代码进行更进一步的操作。 –

+0

您正在使用mysqli_ *函数,就像它们是mysql_ *函数一样。尝试转义$ id,你的代码容易受到mysql注入的影响($ id来自$ _GET,没有被清理,并且被直接插入到查询中,你可以使用一个很好的mysql/mysqli/pdo&mysql教程。对于PDO和MySQL,祝你好运。 –

回答

2

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

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

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

我也很好奇,为什么你正在使用LIKEID场。

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

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

逃不出你的VAR在简单的报价

+0

你也应该从SQL注入中逃避它。在这种情况下,你可以简单地施放它。 –

+0

啊,我当时很蠢,谢谢! –

+0

可以使用mysql_real_escape_string()或像pdo这样的DAO类,例如 – ke20

1

试试这个:

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

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

你需要为了使用双引号为PHP正确扩大你的变量:)所以改变你的查询

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

变化

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

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

变量会,如果他们是双引号之间"

相关问题