2013-04-12 80 views
-3

嗨即时尝试执行简单的任务,从URL中抓取一个Id并使用该ID仅显示我的数据库中的特定文章。 Id正在从链接中抓取并显示在网址中 - 所以即时猜测我的问题是与我的查询的WHERE部分。Mysql从URL获得ID

这里是我所做的查询:

$dblink = mysqli_connect("localhost", "*", "*", "*") or die ("Error: Can't connect to the database.."); 
    $id=mysql_real_escape_string($_GET['id']); 
    $query = "SELECT * FROM articles WHERE articles_id = '" . $id . "'"; 

    $largearticleresult = mysqli_query($dblink, $query) or die("Request could not be made: " . mysqli_error($dblink)); 

这里是它是如何在HTML被呼应了:

<?php 
while($row = mysqli_fetch_assoc($largearticleresult)) 
{       
echo "<all the html markup i have made>"; 
} 
?> 

林以为是在我做错事的= '" . $id . "'";各地我的查询的一部分,一直想知道做这样的事情:

$id=mysql_real_escape_string($_GET['id']); 
    $largearticleresult = mysql_query("SELECT * FROM groups where id=".$id.";"); 

但即时通讯只是坚持在这个问题现在:-)对不起,这个简单的问题。

UPDATE:

我试图用数字替换'" . $id . "' - 这工作,并显示文章

更新2:

现在,我已经尝试过的if语句,看看是否$ ID甚至越来越设立..它似乎并没有被...

+3

你mysql_ *和MySQLi的混淆? – phpisuber01

+0

谨慎解释? :-) –

+0

什么显示回显$ id? –

回答

0

原来的$ ID是mysql_real_escape_string使用的问题 - 删除它和它的工作就像一个魅力

-1

三个步骤改正它:

  1. 请勿使用 mysqli
  2. 使用准备语句
  3. 使用PDO

因此,有代码

include 'pdo.php'; 
$sql = "SELECT * FROM articles WHERE articles_id = ?"; 
$stm = $pdo->prepare($sql); 
$stm->execute(array($_GET['id'])); 
$article = $stm->fetch(); 
?> 
<div> 
Do all the HTML markup as <b>clean HTML</b> 
using <?=$article['title']?> where needed 
</div> 

如果您选择多行 - 使用fetchAll(),而不是fetch(),然后遍历使用foreach结果数组。你可以在我链接的文章中找到一个例子。

+1

+ +1,因为良好的做法,但准备好的陈述不需要PDO。 MySQLi非常好地处理它们。 – phpisuber01

+0

所以我需要在我的html标记中执行_while($ row = mysqli_fetch_assoc($ largearticleresult))_只需编写普通html并使用<?= $ article ['title']?> –

+0

@ phpisuber01 *令人赞叹*你有没有在任何现实生活中使用mysqli准备好的语句? –