在动态页面上工作

时间:2012-12-06 06:55:26

标签: php mysql

我一直在使用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>";
}
?>

3 个答案:

答案 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_;使用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);