Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Mysql到Mysqli转换代码很困难_Php_Mysql_Mysqli - Fatal编程技术网

Php Mysql到Mysqli转换代码很困难

Php Mysql到Mysqli转换代码很困难,php,mysql,mysqli,Php,Mysql,Mysqli,我正在看几年前由phpacademy.org的Alex编写的一些教程,他正在使用mysql而不是mysqli。我知道mysqli更好,应该使用mysqli,但似乎不知道如何让这些代码与所有mysqli一起工作。有人能转换它吗 <?php $connect = mysql_connect('localhost', 'root', 'pass') or die (mysqli_error()); mysql_select_db('jquery'); if (isset($_POST['use

我正在看几年前由phpacademy.org的Alex编写的一些教程,他正在使用mysql而不是mysqli。我知道mysqli更好,应该使用mysqli,但似乎不知道如何让这些代码与所有mysqli一起工作。有人能转换它吗

<?php
$connect = mysql_connect('localhost', 'root', 'pass') or die (mysqli_error());
mysql_select_db('jquery');

if (isset($_POST['username'])) {
    $username = mysql_real_escape_string($_POST['username']);
    if (!empty($username)) {
        $username_query = mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username`='$username'");
        $username_result = mysql_result($username_query, 0);

        if ($username_result == 0) {
            echo 'Username is available!';
        } else if ($username_result == 1) {
            echo 'Sorry, that username is taken.';
        }
    }
}
?>
所以我一直得到的唯一错误是来自
mysqli\u result
的说法:

致命错误:在第8行的\php\username.php中调用未定义的函数mysqli_result()


我在网上查找了mysqli_result的用法,但没有找到多少结果来帮助我解决这个问题,希望这里有人能帮助我。

当你使用面向对象的风格时,你的
$username_query
属于同类
mysqli_result
是一个类而不是一个函数

要从结果集中获取行,可以执行以下操作(例如):


您应该使用mysqli(或PDO)而不是
mysql.*
函数的原因不仅仅是后者被弃用:PDO(和mysqli)提供prepare语句,这比escape函数对sql注入提供更好的保护。

首先确保表中的username列是唯一的,这样就不会有重复的用户名,因此,
$count
正好是0或1,然后尝试以下操作:

if (isset($_POST['username']) && $_POST['username'] != '') {

    $connect = new mysqli('localhost', 'root', 'pass', 'jquery') or die (mysqli_error());
    $username       = $_POST['username'];
    $query          = "SELECT COUNT(`user_id`) AS count FROM `users` WHERE `username`=?";
    $username_query = $connect->prepare($query);
    $username_query->bind_param('s', $username);
    $username_query->execute();
    $username_query->bind_result($count);
    $username_query->fetch();
    $username_query->close();
    $connect->close();

    if ($count == 0) {
        echo 'Username is available!';
    } else if ($count == 1) {
        echo 'Sorry, that username is taken.';
    }
}

请不要使用不适用于您的问题的标记。它要求我在第3行用完后添加5,因此我决定添加其他标记,因为很多时候当任务被询问时,人们会询问他们使用的是什么web服务器以及他们使用的所有服务器,因此我将apache放在我修复的第7行。然后第8行有错误我注释掉了第8行,然后第9行有错误。这段代码有很多错误,与I代码完全不同。我从来没有在一个代码中看到过这么多->这样的错误。是的,现在有两个拼写错误被修复了,任何有基本知识的人都可以修复它们,至于
->
,在下结论之前,你应该多读一些,代码正在运行,我在我的服务器上对其进行了测试。这是一个非常全面的示例,不仅包含查询参数,还包含结果绑定。由于使用了面向对象的接口,
->
显示了很多,一旦您习惯了,它通常比过程接口更容易遵循。添加注释可能有助于解释这里发生了什么。现在我尝试了它,但之前它根本不起作用。它不断地在绑定参数的线路上给我错误。我能从上面的人那里得到帮助,用我自己的改变很少的东西。我习惯于用老方法编码,这种方式对我来说非常混乱。遗憾的是,我不能选择两个答案都正确,因为它们都有效。很抱歉。我会研究mysqli_fetch_数组,看看是否能让它为我工作。它到底返回真还是假?@joebbjr。当没有更多行时,数组或
NULL
。当我回显$username\u result=mysqli\u fetch\u数组($username\u query);它将数组回响到我的页面。我甚至不知道我怎么能用这个。还在想办法呢,谢谢你的回复。@joebjr。您正在获取一个数组,因此结果是一个数组。只要做一个
var\u dump()
而不是一个
echo
,您可能会看到您可以在
$username\u result[0]
中找到结果,var\u dump正好显示了我所需要的,谢谢。只是需要改变我的想法。if($username\u result=='0')到if($username\u result[0]=='0')现在工作正常。
$username_result = mysqli_fetch_array($username_query);
if (isset($_POST['username']) && $_POST['username'] != '') {

    $connect = new mysqli('localhost', 'root', 'pass', 'jquery') or die (mysqli_error());
    $username       = $_POST['username'];
    $query          = "SELECT COUNT(`user_id`) AS count FROM `users` WHERE `username`=?";
    $username_query = $connect->prepare($query);
    $username_query->bind_param('s', $username);
    $username_query->execute();
    $username_query->bind_result($count);
    $username_query->fetch();
    $username_query->close();
    $connect->close();

    if ($count == 0) {
        echo 'Username is available!';
    } else if ($count == 1) {
        echo 'Sorry, that username is taken.';
    }
}