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();
?>