2013-04-12 105 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準備好的語句? –