PHP MySQL 无法跳转到第 0 行

PHP MySQL unable to jump to row 0

最近开始学习web开发,第一个项目要做一个很简单的登录注册功能。现在我到了某个地方,但突然我开始收到这个错误。

Unable to jump to row 0 on MySQL result index 4.

这是我出错的代码。

$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;

我知道还有其他帖子问同样的问题,但其中 none 确实很有帮助。

希望有人能够帮助我。

感谢阅读:)

这行可能是:

password = mysql_result($result, 0);

当它不匹配任何内容时无法获取行,这就是您收到错误的原因。

试试看:

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'";

我建议使用 PDO,而不是 mysql_... 函数。 不仅因为它较新且面向对象,还因为 mysql... 已弃用。
所以我的答案是 PDO

根据您的代码示例,我假设您有服务器名、数据库、用户名和密码变量。因此,与 PDO 的连接将如下所示:

$con = new PDO("mysql:host=$servername;dbname=$database", $username, $password);

然后你可以使用filter_input来获取你的$_GET参数,这也是比较推荐的。简单的赋值如下所示:

$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 因为我必须在星期一之前上交。

非常感谢:)