Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.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 显示行0-0(共1行)的sql导致mysql\u num\u行出错_Php_Sql_Session_Mysql Num Rows - Fatal编程技术网

Php 显示行0-0(共1行)的sql导致mysql\u num\u行出错

Php 显示行0-0(共1行)的sql导致mysql\u num\u行出错,php,sql,session,mysql-num-rows,Php,Sql,Session,Mysql Num Rows,对,我已经确认了查询SELECT*FROM mbgeust,其中user_name='{$name}和user_pass=SHA1('{$pass}')返回一个结果,但它返回的结果是“显示行0-0(总共1行,查询耗时0.0005秒)”,而不是0-1行作为mysql_num_rows($mysql)返回0,尽管查询返回一行,这里是我的全部代码 <?php session_start(); include './inc/sql.php'; if(!isset($_SES

对,我已经确认了查询
SELECT*FROM mbgeust,其中user_name='{$name}和user_pass=SHA1('{$pass}')
返回一个结果,但它返回的结果是“显示行0-0(总共1行,查询耗时0.0005秒)”,而不是0-1行作为
mysql_num_rows($mysql)
返回0,尽管查询返回一行,这里是我的全部代码

<?php
    session_start();
    include './inc/sql.php';
    if(!isset($_SESSION['loggedin'])){
        if(isset($_POST['submit'])){
            $name = mysql_real_escape_string($_POST['username']);
            $pass = mysql_real_escape_string($_POST['password']);
            sql_start();
            $mysql = mysql_query("SELECT * FROM mbgeust WHERE user_name = '{$name}' AND user_pass = SHA1('{$pass}')")
                or die ("Error: ". mysql_error(). " with query ". $mysql);
            if(mysql_num_rows($mysql) == 1){
                $_SESSION['loggedin'] = TRUE;
                $_SESSION['name'] = $name;
                header('refresh:3; URL = /');
                die('You are now logged in!');
            }
            else{
                header('refresh:3; URL = /');
                die ('Password was probably incorrect!');
            }
            sql_stop();
            }
        echo "<form action='./' method='POST'>
        Username: <br/>
        <input type='text' name='username' /><br/>
        Password: <br/>
        <input type='password' name='password' /><br/>
        <input type='submit' name='submit' value='Login'/>
        </form>";
    }
    else {
        include 'main.php';
    }
?>

我已切换到mysqli,并更改了sql\u start/sql\u stop in,将页面开头和结尾包含的文件分开。如果有人知道如何在不移动到mysqli的情况下修复此问题,请提供答案,因为这将帮助其他人。以下是我目前的代码:

<?php
    session_start();
    include './inc/sql_start.php';
    if(!isset($_SESSION['loggedin'])){
        if(isset($_POST['submit'])){
            $name = $mysqli->real_escape_string($_POST['username']);
            $pass = $mysqli->real_escape_string($_POST['password']);
            $query = "SELECT * FROM mbgeust WHERE user_name = '{$name}' AND user_pass = SHA1('{$pass}')";
            if ($stmt = $mysqli->prepare($query)) {
                $stmt->execute();
                $stmt->store_result();
                if($stmt->num_rows == 1){
                    $_SESSION['loggedin'] = TRUE;
                    $_SESSION['name'] = $name;
                    header('refresh:3; URL = /');
                    die('You are now logged in!');
                }
                else{
                    header('refresh:3; URL = /');
                    die ('Password was probably incorrect!');
                }
                $stmt->close();
            }
        }
        echo "<form action='./' method='POST'>
        Username: <br/>
        <input type='text' name='username' /><br/>
        Password: <br/>
        <input type='password' name='password' /><br/>
        <input type='submit' name='submit' value='Login'/>
        </form>";
    }
    else {
        include 'main.php';
    }
    include './inc/sql_stop.php';
?>

sql_start.php

<?php
    $mysqli = new mysqli("mackinnonsbakery.co.uk.mysql", "mackinnonsbaker", "UE9ux3cZ", "mackinnonsbaker");
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }
?>

sql_stop.php

<?php
    $mysqli->close();
?>


同样,如果有人有真正的解决方案,请发布它

您在
sql\u start()
之前调用的
mysql\u real\u escape\u string
,因此您没有活动的数据库连接-因此
$name
$pass
可能设置为
false
。检查您的错误日志,您应该会看到警告。

这是因为我使用的是全局($con)不是iti,我也尝试过mysqli,我得到了相同的结果
<?php
    $mysqli->close();
?>