MySql Query出错,它显示部分数据而不是其余数据

时间:2014-03-05 18:19:35

标签: php mysql

在我的这个索引页面中,我发现代码时出错,所以我打印出查询以查看错误是否存在,奇怪的是我得到了查询的ID和密码而不是用户名。

这是打印输出: SELECT * FROM admin WHERE id='3' AND username='' AND password='alan' LIMIT 1You data dont exist in the database

其中username字段为空应为Alan

这是我的PHP:

<?php 
session_start();
if (!isset($_SESSION["manager"])){
header("location: admin_login.php");
exit();
}

$managerID = preg_replace('#[^0-9]#i','',$_SESSION["id"]);
$manager = preg_replace('#[^A-Za-z0-9]#i','',$_SESSION["username"]);
$password = preg_replace('#[^A-Za-z0-9]#i','',$_SESSION["password"]);

include"db_connection.php"; 
$q = "SELECT * FROM admin WHERE id='$managerID' AND username='$manager' AND  password='$password' LIMIT 1";
$sql = mysql_query($q);

echo $q;

$existCount=mysql_num_rows($sql);
if ($existCount ==0){
//header ("location: index.php");
echo "You data dont exist in the database";
exit();
 }
 ?>

1 个答案:

答案 0 :(得分:1)

使用以下内容,我能够成功回显所有三个会话变量。

因此,我的印象是username会话变量未设置(来自之前的表单/ HTML),和/或表单输入元素未命名或包含拼写错误。

由于您未在(原始)问题中提供有关您如何使用它(来自表格或其他)的其他信息,因此我将提交以下内容作为成功的测试。

我从代码中遗漏了第一个条件语句,并填写了我自己的会话变量。

<?php
session_start();

$_SESSION["id"] = "3";
$_SESSION["username"] = "FRED";
$_SESSION["password"] = "12345";

$managerID = preg_replace('#[^0-9]#i','',$_SESSION["id"]);
$manager = preg_replace('#[^A-Za-z0-9]#i','',$_SESSION["username"]);
$password = preg_replace('#[^A-Za-z0-9]#i','',$_SESSION["password"]);

echo $_SESSION["id"];
echo "<br>";
echo $_SESSION["username"];
echo "<br>";
echo $_SESSION["password"];

哪个回声:

3
FRED
12345

我正在质疑这一行,因为没有其他的参考:

if (!isset($_SESSION["manager"]))

因为它似乎与“经理”这个词有关

$managerID = preg_replace('#[^0-9]#i','',$_SESSION["id"]);

您可能打算使用:

if (!isset($_SESSION["id"]))

或:

$managerID = preg_replace('#[^0-9]#i','',$_SESSION["manager"]);