-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>";
}
?>
4

3 回答 3

1

用这个替换您的查询,您的查询中有语法错误。

$query = mysql_query("select * from dynamic_data where id=".(int)$_GET['id']);
于 2012-12-06T07:04:52.047 回答
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>";
  }

?>
于 2012-12-06T07:02:30.670 回答
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);
于 2012-12-06T07:02:50.467 回答