PHP MySQL无法跳转到第0行

PHP MySQL无法跳转到第0行,php,mysql,login,registration,Php,Mysql,Login,Registration,我最近开始学习webdevelopment,在第一个项目中,我们必须创建一个非常简单的登录和注册功能。现在我到了某个地方,但突然我开始犯这个错误 无法跳转到MySQL结果索引4上的第0行 这是我得到错误的代码 $conn = mysql_connect($servername, $username, $password, $database) or die("!Server"); if(!$conn){ die("Connection error: " . mysql_error())

我最近开始学习webdevelopment,在第一个项目中,我们必须创建一个非常简单的登录和注册功能。现在我到了某个地方,但突然我开始犯这个错误

无法跳转到MySQL结果索引4上的第0行

这是我得到错误的代码

$conn = mysql_connect($servername, $username, $password, $database) or die("!Server");

if(!$conn){
    die("Connection error: " . mysql_error());
}else{
    echo "connection made";
}

$select_db= mysql_select_db($database, $conn);

if(!$select_db){
    die("Database selection failed:: " . mysql_error());
}else{
    echo "database selected";
}

$login_user = $_GET['username'];
$select_password = "SELECT `password` FROM `members` WHERE `username` = '$login_user'";
$result = mysql_query($select_password);

if(!$result){
    die("Could not fetch the data " . mysql_error());
}

$password = mysql_result($result, 0);

echo $password;
我知道也有其他帖子问同样的问题,但没有一篇真正有用

希望有人能帮助我


感谢阅读:)

这一行可能:

password = mysql_result($result, 0);
如果行与任何内容都不匹配,则无法获取行,这就是您获得错误的原因

$conn = mysql_connect($servername, $username, $password, $database) or die("!Server");

if(!$conn){
    die("Connection error: " . mysql_error());
}else{
    echo "connection made";
}

$select_db= mysql_select_db($database, $conn);

if(!$select_db){
    die("Database selection failed:: " . mysql_error());
}else{
    echo "database selected";
}

$login_user = $_GET['username'];
$select_password = "SELECT `password` FROM `members` WHERE `username` = '$login_user'";
$result = mysql_query($select_password);

if(!$result){
    die("Could not fetch the data " . mysql_error());
}

$password = mysql_result($result, 0);

echo $password;
请尝试:

if( $password = mysql_fetch_assoc($result) ) {
    echo $password['password'];
} else {
    echo 'no match';
}
看看这是否有帮助

但是,您真的应该从mysql转移到PDO或mysqli。

改变这一点:

$select_password = "SELECT `password` FROM `members` WHERE `username` = '$login_user'";
为此:

$select_password = "SELECT password FROM members WHERE username = '$login_user'";
我建议使用,而不是mysql。。。功能。 不仅因为它更新且面向对象,还因为mysql。。。已弃用。
所以我的答案是PDO

从您的代码示例中,我假设您有servername、database、username和password变量。因此,与PDO连接将如下所示:

$con = new PDO("mysql:host=$servername;dbname=$database", $username, $password);
$login_user = filter_input(INPUT_GET,'username');
$result_query = $con->query("SELECT `password` FROM `members` WHERE `username` = '$login_user'");
$result = $result_query->fetch(PDO::FETCH_ASSOC);
然后,您可以使用$\u GET参数,这也是建议的。简单的赋值如下所示:

$con = new PDO("mysql:host=$servername;dbname=$database", $username, $password);
$login_user = filter_input(INPUT_GET,'username');
$result_query = $con->query("SELECT `password` FROM `members` WHERE `username` = '$login_user'");
$result = $result_query->fetch(PDO::FETCH_ASSOC);
然后按如下方式运行并获取查询:

$con = new PDO("mysql:host=$servername;dbname=$database", $username, $password);
$login_user = filter_input(INPUT_GET,'username');
$result_query = $con->query("SELECT `password` FROM `members` WHERE `username` = '$login_user'");
$result = $result_query->fetch(PDO::FETCH_ASSOC);
现在$result是一个关联数组,因此要获取密码,只需使用:

echo $result['password']; 
非常感谢您的帮助:)在这些答案中,我得到了我所需要的一切,现在我也将切换到PDO进行最终发布,尽管我现在将继续使用MySQL,因为我必须在周一之前提交它


非常感谢:)

直接在数据库中运行此查询并检查结果!!在查询中输入之前,请确保设置了
$login\u user
。可能有用!queryNote之前的empty()检查:
mysql.*
函数已被弃用,它们将在将来的版本中从PHP中删除,您的代码将停止工作。您不应该使用它们编写新代码,而是使用它们。您可以发布$result和$password的dd结果吗?如果您刚刚开始学习php和mysql,我强烈建议您不要学习mysql。帮自己一个忙,学习使用最现代的语言,如果没有找到结果,仍然会显示错误消息。你是正确的,我将mysql\u结果更改为mysql\u fetch\u assoc以避免错误。谢谢你的来信。只是复制粘贴错误的部分。为什么这会改变一些东西?因为您现在正在查看表。您应该查看表中的数据。您只从查询中删除了`。这应该不会改变任何内容。如果您可以将username='$login\u user'';更改为username='$登录用户;这一切都与精确编码有关。这不会再改变任何内容(您忘记用
关闭,
应该是
username='“$login\u user.”“;
[仍然不改变任何内容])。这不是您问题的答案。如果其中一个答案反映了您的解决方案,请将其标记为已解决。您可以在评论中感谢。