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