2012-12-06 35 views
-1

我一直在努力使用URL ID參數從數據庫獲取數據。 我面臨同樣的syntax error。任何人都可以告訴我這個代碼有什麼問題。在動態頁面上工作

<?php 
$con = mysql_connect("localhost","root",""); 
if (!$con) 
{ 
    die('Could not connect: ' . mysql_error()); 
} 
$per = $_GET['id']; 

$query = mysql_query("select * from dynamic_data where id=".$_GET['id']"); 


while($row = mysql_fetch_array($query)) 
{ 
    echo "<label>" . $row['name'] . "</label>"; 
    echo "<label>" . $row['desc'] . "</label>"; 
    echo "<label>" . $row['cell'] . "</label>"; 
} 
?> 
+1

什麼是錯誤? –

+0

不是答案,但是您的代碼已開放給SQL注入。切勿在查詢中直接使用get參數。 – Grumpy

+0

@Peter嗯,這就是爲什麼你在那裏鍵入它,在評論部分:) –

回答

0

這是工作

<?php 
$con = mysql_connect("localhost","root",""); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 

$per = $_GET['id']; 
$query = mysql_query("select * from dynamic_data where id=$per"); 


while($row = mysql_fetch_array($query)) 
    { 
    echo "<label>" . $row['name'] . "</label>"; 
    echo "<label>" . $row['desc'] . "</label>"; 
    echo "<label>" . $row['cell'] . "</label>"; 
    } 

?> 
0

首先,停止使用mysql_;使用PDOmysqli並瞭解準備好的語句。

你可以從你自己的文章中發現語法錯誤的起源。有一個無與倫比的雙引號。

下面的結構應該幫助你編寫更安全的疑問:

$sql = sprintf("select * from dynamic_data where id='%s'", mysql_real_escape_string($_GET['id'])); 

$result = mysql_query($sql); 

它確保質樸的字符正確轉義。在你的情況下,ID是一個數字,所以這也可以工作:

$sql = sprintf("select * from dynamic_data where id=%d", (int)$_GET['id']); 

$result = mysql_query($sql); 
1

用你的查詢替換你的查詢,你有一個語法錯誤的查詢。

$query = mysql_query("select * from dynamic_data where id=".(int)$_GET['id']); 
+0

它應該是id =「。(int)$ _ GET ['id']。」。 <---- – iJay