重定向到新页面后,MySQL数据库无法加载

时间:2013-07-19 06:22:10

标签: php mysql random header

遇到以下代码问题:

<?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>";没有显示任何内容而且也没有显示任何错误消息。其实我不明白我在做什么是错的。我是新手程序员。任何人都可以帮我解决这个问题。

2 个答案:

答案 0 :(得分: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解释的那样是头错误。

答案 1 :(得分:0)

你可以试试这样的事情

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

在使用

将id-variable插入SQL查询之前,你至少应该转义它
$escapedId = mysql_real_escape_string($id);