0

以下代码有问题:

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

$ids = intval($_GET['id']);
if ($ids==0){
    $id = rand (0,50);
    header("Location: http://index.php?id=$id");
}
?>

<html>
<body>

<?php
$result = mysql_query("SELECT * FROM abcdatabase WHERE id = '$id'");

if (!$result) {
echo 'Could not run query: ' . mysql_error();
exit;
}

$row = mysql_fetch_array($result);

echo "{$row['username']}<br>";

?>

</body>
</html>

重定向到新页面后,http://index.php/?id=38我认为 MySQL 数据库没有加载。因为该行echo "{$row['username']}<br>";没有显示任何内容,也没有显示任何错误消息。其实我不明白我做错了什么。我是一个新手程序员。任何人都请帮我解决这个问题。

4

2 回答 2

1

对于初学者,您不应再使用 mysql 库,因为它已被弃用。改用 mysqli 库:http: //php.net/manual/en/book.mysqli.php

其次,你有一个小错误。在第 8 行中,您设置了 $ids 变量,但在第 19 行中,您没有使用它。您在那里使用 $id ,这将是空的。所以你搜索 id = empty 并且你的查询成功(你有一个结果:没有找到记录)所以没有错误消息,但你也没有得到一个名字(因为没有找到记录)。所以更换

$result = mysql_query("SELECT * FROM abcdatabase WHERE id = '$id'");

$result = mysql_query("SELECT * FROM abcdatabase WHERE id = '$ids'");

一般来说,如果您的代码希望找到 1 个结果,还请添加一个检查以确认您确实找到了一个结果,如果没有,则添加一条错误消息。代替

if (!$result) {
  echo 'Could not run query: ' . mysql_error();
  exit;
}

if (!$result) {
  echo 'Could not run query: ' . mysql_error();
  exit;
}
elseif (mysql_num_rows($result) <> 1) {
  echo 'No records found';
  exit;
}

第三,有像 Joachim 解释的标题错误。

于 2013-07-19T06:32:49.043 回答
0

你可以试试这样的

$id = rand(0, 50);
if (isset($_GET['id'])){
    $id = intval($_GET['id']);
}

您还应该至少在将 id 变量插入 SQL 查询之前对其进行转义,使用

$escapedId = mysql_real_escape_string($id);
于 2013-07-19T06:29:58.703 回答