mysqli_fetch_row()期望参数1为mysqli_result

时间:2014-02-12 22:11:31

标签: php parameters mysqli

我已经阅读了很多这些内容,它们大部分都是数据库连接或查询中的错误。我收到此错误,我有一个良好的连接和良好的查询。我知道这是因为我print_r或回显$ row的结果,我得到匹配的结果。

<?php 
if (!isset($_POST['submit'])) {
    header("Location: http://tsec.tleeaa.org"); 
    exit;   
}
?>
<?php 
session_start();
require_once('Connections/db_tsectleeaa_connection.php');
require_once("_includes/functions.php"); 
?>
<?php $_SESSION['leadadv_email'] = $_POST['leadadv_email']; $email_compare =    $_SESSION['leadadv_email']; ?>
<?php
$dbquery  = "SELECT * ";
$dbquery .= "FROM `tsec_team_registration` "; 
$dbquery .= "WHERE `leadadv_email` = ";
$dbquery .= " '$email_compare' " ;

$result = mysqli_query($db_tsectleeaa_connection, $dbquery);
    if(!isset($result)) {
        die("Database query failed");
    }

while ($row = mysqli_fetch_row($result)){
print_r($row[10]);                  //should match next line
echo "<br />".$email_compare."<br />";          //should match line above
    if ($row[10] === $email_compare){
        echo "match!";

        } else echo "no match!";
} 
?>

最大的问题是IF语句不起作用。当语句为真时它将起作用,但如果它是假的则不会“否则”。

此页面的作用是验证上一页中的电子邮件。一旦他们点击“提交”,表单的操作就是这个页面。当数据库在正确的位置有bacon @ burger并且用户使用bacon @ burger作为电子邮件地址时,会发生以下结果: 培根汉堡@ 培根汉堡@ 匹配!

我仍然收到此错误:

( ! ) Warning: mysqli_fetch_row() expects parameter 1 to be mysqli_result, boolean given in C:\wamp\www\index_action.php on line 24
Call Stack
#   Time    Memory  Function    Location
1   0.0005  256032  {main}( )   ..\index_action.php:0
2   0.0052  273264  mysqli_fetch_row ( )    ..\index_action.php:24

有人能指出我可能会发生什么事情的方向吗?

4 个答案:

答案 0 :(得分:1)

将if语句更改为

  if(!$result) {

答案 1 :(得分:0)

您写道:

$result = mysqli_query($db_tsectleeaa_connection, $dbquery);

因此,isset()总是评估为true。

这可能会更好:

if($result === false) {
    die("Database query failed");
} else {
    // use mysqli_fetch_row() here.
}

答案 2 :(得分:0)

好的感谢所有人的反馈!!

我找到了答案,正如我想的那样,这是我的代码的问题,但它在连接内部。这是发生了什么。

CONNECTING与数据库和对数据库进行QUERY之间存在差异。在连接中,使用mysqli,您只需要$ hostname,$ username和$ password:

$hostname_db_tsectleeaa_connection = "localhost";
$database_db_tsectleeaa_connection = "tsectleeaa2014competition";
$username_db_tsectleeaa_connection = "dbtleeaauser";
$password_db_tsectleeaa_connection = "xxxxxxxxxxx";
$db_tsectleeaa_connection = mysqli_connect($hostname_db_tsectleeaa_connection, $username_db_tsectleeaa_connection, $password_db_tsectleeaa_connection, ***$database_db_tsectleeaa_connection***) or trigger_error(mysqli_error(),E_USER_ERROR); 
if(mysqli_connect_errno()) {
            die ("Database Connection Failed, ".$mysql_connect_error()." (". $mysql_connect_errno()." )");
        }
?>

我在数据库连接中没有的内容($ db_tsectleeaa_connection)是数据库的实际变量($ database_db_tsectleeaa_connection)。而那将连接数据库本身,它不能产生查询。一旦我将其加载到连接字符串中,就可以了。

答案 3 :(得分:-1)

您的表名不正确,或者对于该特定用户名和密码的select命令可能被拒绝