【问题标题】:mysqli_result not working converting MySQL to mysqli [duplicate]mysqli_result 无法将 MySQL 转换为 mysqli [重复]
【发布时间】:2015-01-15 08:20:28
【问题描述】:

我正在将我的旧 MySQL 转换为 mysqli,但遇到了这个问题 mysqli 结果不起作用。上网查了一下,发现它的功能变了,mysqli的结果有没有等价的?

这是我的错误

致命错误:在第 153 行调用 C:\xampp\htdocs\bear_mysqli\functions\users.php 中未定义的函数 mysqli_result()

function user_exists($con,$username)
{
    $username = sanitize($con,$username);

    $query = mysqli_query($con,"SELECT COUNT(`user_id`)FROM `users` WHERE `username` = '$username'");

    return (mysqli_result ($query, 0)== 1) ? true : false;
}

【问题讨论】:

  • PHP版本>=5 ?
  • 我使用 XAMPP V 3.21
  • 好的,所以你不知道你运行的是什么版本的 PHP。也许这会给你一个线索你做错了什么:php.net/manual/en/class.mysqli-result.php
  • 感谢复制函数近似于 mysqli_result 所做的感谢

标签: php mysqli


【解决方案1】:

不,没有mysql_resultmysqli_result 对应部分。如果您只是检查它是否存在,请使用 ->num_rows:

并改用准备好的语句。

function user_exists($con, $username) {

    $sql = 'SELECT * FROM `users` WHERE `username` = ?';
    $select = $con->prepare($sql);
    $select->bind_param('s', $username);
    $select->execute();
    $select->store_result();

    return ($select->num_rows > 0); // returns bool (true/false)
}

或者为您的COUNT() 使用别名并获取它:

function user_exists($con, $username) {

    $sql = 'SELECT COUNT(`user_id`) AS `total` FROM `users` WHERE `username` = ?';
    $select = $con->prepare($sql);
    $select->bind_param('s', $username);
    $select->execute();
    $select->store_result();
    $select->bind_result($total);
    $select->fetch();

    return $total; // returns the result yielded by alias `total`
}

【讨论】:

  • 那么,php 7 中的单行查询不像没有准备好的语句的 mysql_result 中的 php 5 那样工作? return (mysqli_result ($query, 0)== 1) ? true : false;
【解决方案2】:

在 php.ini 中启用 mysqli

搜索extension=php_mysqli.dll 并在php.ini 中取消注释,只需在extension=php_mysqli.dll 之前删除;

; Windows Extensions
; Note that ODBC support is built in, so no dll is needed for it.
; Note that many DLL files are located in the extensions/ (PHP 4) ext/ (PHP 5)
; extension folders as well as the separate PECL DLL download (PHP 5).
; Be sure to appropriately set the extension_dir directive.

extension=php_mysqli.dll

并在应用设置后重新启动 xampp。

【讨论】:

    【解决方案3】:

    如果您尝试检查用户名是否存在,您可以这样做:

    $urexist="SELECT * FROM persons WHERE Email = '$_POST[EMailTxt]'";
    $res = mysqli_query($conect,$urexist);//you should add a connection paramenter 
    $data = mysqli_fetch_array($res, MYSQLI_NUM);
    if($data[0] > 1) {
    echo "User Exists";
    }
    

    【讨论】:

    • 关于您刚刚删除的问题,请理解始终删除问题并非在所有情况下都有用。事实上,删除许多问题可能会导致网站限制您进一步的问题。
    • @hexafraction 我是该网站的新手,我没有阅读条款是我的错误,我被禁止提问,谢谢
    • 我不认为你现在被禁止了。请尝试写一个好的具体问题,然后询问是否仍需要帮助。
    • @hexafraction 我没有该应用程序的信息的问题我在网上搜索并没有发现任何内容,也许我的研究不清楚..我会再试一次...谢谢: )
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-06
    • 2013-12-06
    • 2012-05-18
    • 2019-03-19
    • 1970-01-01
    • 2011-12-22
    • 2020-03-26
    相关资源
    最近更新 更多