我目前正在处理用户个人资料页面。代码应该使用$ _GET函数从URL获取用户名。但是,当我想回应这些数据时,它会产生一个奇怪的错误,
( ! ) Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\pvp\user.php on line 22
Call Stack
# Time Memory Function Location
1 0.0010 675120 {main}( ) ..\user.php:0
2 0.0111 697392 mysql_fetch_array ( ) ..\user.php:22
这是代码:
require 'includes/connection.php';
require 'includes/common.php';
if (empty($_SESSION['user'])) {
echo '<a href="login.php">login here</a> to view this profile!';
}
else {
echo 'you are logged in!';
if (isset($_GET['user'])) {
$user = $_GET['user'];
echo $user;
$query = "SELECT * FROM `users` WHERE username = $_GET[user]";
$result = mysql_query($query);
$post = mysql_fetch_array($result);
}
else {
echo 'No user selected';
}
}
我做错了什么?请帮助我谢谢
答案 0 :(得分:2)
很明显,我的查询有错误,所以在
之前打印出你的mysql错误$user=$_GET['user'];
$query = "SELECT * FROM `users` WHERE username = '$user'";
$result = mysql_query($query) or die(" DB Error:".mysql_error());
答案 1 :(得分:0)
试试这个
$myvar = mysql_real_escape_string($_GET['user'])
$query = "SELECT * FROM `users` WHERE username = '".$myvar."' ";
你应该在使用它之前转义你的变量。
答案 2 :(得分:0)
php doc:mysql_query() returns a resource on success, or FALSE on error
。如果你有一个布尔值而不是一个资源,那就意味着你有一个错误。
检查您的查询字符串:$query = "SELECT * FROM users WHERE username = ".$user;
这是问题所在。
如果username
是字符串,请添加引号('your string var'):$query = "SELECT * FROM users WHERE username = '".$user."';
答案 3 :(得分:0)
mysql_query()的第二个参数是连接资源
您必须在'includes / connection.php'中建立连接时定义连接变量 像这样:
$conn=mysql_connect('host','user','password');
你必须将该变量放在
中$result=mysql_query($query,$conn);
答案 4 :(得分:0)
当用户名是字符串时,您必须使用引号。
$ query =&#34; SELECT * FROM users WHERE username =&#39;&#34;。$ userName。&#34;&#39; &#34 ;; 强>
由于您的查询错误,mysql_fetch_array会获得一个空结果,因此会抛出错误。 !