2009-10-25 69 views
0

是我的JSON的PHP代码JSON和mysql的问题

include("connect.php"); 
$id = $_GET['lid']; 
function countRec($fname,$tname) { 
$sql = "SELECT * FROM `mail` WHERE confirmed = 'no' AND label_id = '". $id ."'"; 
$result = mysql_query($sql) or die ('test'); 
$num = mysql_num_rows($result); 
return $num; 
} 

$page = $_POST['page']; 
$rp = $_POST['rp']; 
$sortname = $_POST['sortname']; 
$sortorder = $_POST['sortorder']; 

if (!$sortname) $sortname = 'ID'; 
if (!$sortorder) $sortorder = 'desc'; 

    $sort = "ORDER BY $sortname $sortorder"; 

if (!$page) $page = 1; 
if (!$rp) $rp = 10; 

$start = (($page-1) * $rp); 

$limit = "LIMIT $start, $rp"; 

$sql = "SELECT * FROM `mail` WHERE confirmed = 'no' AND label_id = '". $id ."' $sort $limit"; 
$result = mysql_query($sql) or die ('test'); 

$total = countRec(); 

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); 
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . "GMT"); 
header("Cache-Control: no-cache, must-revalidate"); 
header("Pragma: no-cache"); 
header("Content-type: text/x-json"); 
$json = ""; 
$json .= "{\n"; 
$json .= "page: $page,\n"; 
$json .= "total: $total,\n"; 
$json .= "rows: ["; 
$rc = false; 
while ($row = mysql_fetch_array($result)) { 
if ($rc) $json .= ","; 
$json .= "\n{"; 
$json .= "id:'".$row['ID']."',"; 
$json .= "cell:['".$row['email']."'"; 
$json .= ",'".addslashes($row['name'])."'"; 
$json .= ",'".addslashes($row['country'])."'"; 
$json .= ",'".addslashes($row['bus'])."'"; 
$json .= ",'".addslashes($row['website'])."'"; 
$json .= ",'".addslashes($row['music'])."'"; 
$json .= ",'".addslashes($row['radio'])."']"; 
$json .= "}"; 
$rc = true; 
} 
$json .= "]\n"; 
$json .= "}"; 
echo $json; 

我张贴数据到这个PHP这样的 “req.php?盖= 3434”

,并获得 “锅盖” 一样$id = $_GET['lid'];你可以看到

但在我的MySQL,当我写WHERE label_id = '$id'它不工作

有什么建议?

感谢

回答

3

你引用一个函数内部的全球$id。你需要将其标记为全球:

function countRec($fname,$tname) { 
    global $id; 
    //etc 
} 

或者你可以把它传递给函数的第三个参数,这可能是一个更好的解决方案。

注意,该代码很容易受到SQL注入式攻击。您应该报价$id(例如使用mysql_real_escape_string()),或者如果它总是一个整数,你可以将它转换,例如$id = (int) $id。更妙的是,你可以使用PDO和使用prepared statments and bound parameters,从而消除了这个问题。

+0

omg你是惊人的thx男人 – 2009-10-25 15:21:39

+0

好的,谢谢你的伟大的建议 – 2009-10-25 15:25:39

+0

我会把'$ id'作为第三个参数,而不是使用'global'。 – cdmckay 2009-10-25 15:51:52