我一直在使用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>";
}
?>
答案 0 :(得分:1)
用此替换您的查询,您在查询中出现语法错误。
$query = mysql_query("select * from dynamic_data where id=".(int)$_GET['id']);
答案 1 :(得分: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>";
}
?>
答案 2 :(得分:0)
首先,停止使用mysql_
;使用PDO
或mysqli
并了解准备好的陈述。
您可以从自己的帖子中了解语法错误的来源。有一个无与伦比的双引号。
以下构造应该可以帮助您编写更安全的查询:
$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);