【问题标题】:Using php to run a MYSQL SELECT query使用 php 运行 MYSQL SELECT 查询
【发布时间】:2017-03-15 04:01:35
【问题描述】:

我正在尝试在名为 test2 的表上运行 select 语句。这是一个非常简单的表,包含用户名和密码列。我不明白如何访问查询结果。我希望能够检查通过 POST 表单发送的用户名和密码是否与我的 test2 表中的用户名和密码匹配。现在我只是想让查询工作并打印出结果。我从这里的文档http://php.net/manual/en/mysqli-stmt.get-result.php

中获得了大部分代码
    $link = mysqli_connect(HOST,USERNAME,PASSWORD,DBNAME) or die ("Connect Error" . mysqli_error($link));

    $query = "SELECT username, password FROM test2 where username =? AND password =?";

    $stmt = mysqli_stmt_init($link);
    if(!mysqli_stmt_prepare($stmt, $query))
    {
            print "Failed to prepare statement\n";
    }

    else{
        mysqli_stmt_bind_param($stmt,"ss", $_POST['user'], $_POST['pw']);

        mysqli_execute($stmt);

        $result = mysqli_stmt_get_result($stmt);


        $numRows = $result->mysqli_num_rows;
        if ($numRows == 1){
            echo "User exists";
        }else{
            echo "No users";
        }
    }
    mysqli_close($stmt);

    mysqli_close($link);

【问题讨论】:

  • 好的,这里没有明显的问题。你遇到了什么错误?
  • 我将代码更改为@TheValyreanGroup 建议的内容。当我提交表单时,屏幕上没有任何内容。我进行了测试,表单数据通过就好了,所以问题一定出在我发布的内容中。
  • 当我使用 php 命令调试我的程序时,我没有收到任何错误。我在远程服务器上运行 linux。提交后,我所有的 html 元素都可以正确显示。有没有办法检查我的查询中的错误?

标签: php mysql mysqli


【解决方案1】:

对于您在那里的查询,您只需要知道是否返回了任何行,而不是行对象的值。

所以,你可以这样做......

$numRows = $result->mysqli_num_rows;
if ($numRows == 1){
    echo "User exists";
}else{
    echo "No users";
}

然后你可以从那里处理它做什么。

但是,如果您真的想对用户进行身份验证,您的查询应该是...

 SELECT ID from test2 WHERE username=? AND password=?

然后在你准备好的语句中也传递来自 POST 的密码。

【讨论】:

  • 我根据您的建议更新了我的原始帖子。当我提交我的帖子表单时,什么都没有打印出来
  • 检查 PHP 错误日志,看看有什么错误。
  • 当我使用 php 命令调试我的程序时,没有错误。我在远程服务器上运行 linux。还有其他检查错误的方法吗?
  • cat 或 nano 到 /var/log/httpd/error_log 或 /var/log/apache2/error.log
  • 调试文件只显示语法错误,不显示执行错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-19
  • 2017-03-13
  • 2019-05-14
  • 2016-01-03
  • 2012-01-04
  • 1970-01-01
相关资源
最近更新 更多