【发布时间】:2013-04-03 04:46:35
【问题描述】:
请告诉我这有什么问题?我在第 17 行和第 21 行遇到错误,请帮忙。这个程序的目的是从数据库中获取并显示用户的详细信息。
<?php
// Connect to database server
mysql_connect("localhost", "root", "") or die (mysql_error ());
// Select database
mysql_select_db("lms") or die(mysql_error());
// (Line 17) Get data from the database depending on the value of the id in the URL
$strSQL = "SELECT * FROM login WHERE id=" . $_GET["id"];
$rs = mysql_query($strSQL);
// (Line 21) Loop the recordset $rs
while($row = mysql_fetch_array($rs)) {
// Write the data of the person
echo "<dt>Name:</dt><dd>" . $row["name"] . "</dd>";
echo "<dt>Username:</dt><dd>" . $row["username"] . "</dd>";
echo "<dt>Rollno:</dt><dd>" . $row["rollno"] . "</dd>";
}
?>
显示的错误信息是:
Undefined index: id in C:\wamp\www\phploginsession\person.php on line 17
mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\phploginsession\person.php on line 21
【问题讨论】:
-
表示 mysql_query($strSQL);返回 false,请检查您的查询是否有效
-
在mysql查询浏览器中执行
SELECT * FROM login WHERE id=1,看是否执行正常。另外,回显 $_GET['id'] 并查看它是否返回有效值 -
这段代码非常不安全,可能会受到mysql注入的影响。首先 mysql_ 函数已经死了,你不应该在 PDO 之类的东西上使用它们。其次,您只是接受 $_GET 的任何内容,甚至没有对其进行清理,这意味着如果有人知道自己在做什么,他们可能真的会搞砸您的服务器。
-
为什么不能在执行查询的地方使用
or die(mysql_error());并亲自查看错误?我很惊讶还没有人建议它 -
唯一可能造成问题的是
$_GET["id"]