我的PHP代码运行不正常?

时间:2016-06-18 03:55:40

标签: php mysql

我在这里遇到一些问题。我正在尝试进行查询以从网站数据库中获取数据,但是即使我知道它们存在,查询也不返回任何行。变量$uslog$ushas是每个用户的用户名和哈希码,在这种情况下,我的测试用户是'PixelKnight1398'和'1398'这些cookie都是这样保存的。当我尝试在phpMyAdmin中运行MySQL代码时,它工作得很好,但从这个意义上说它不起作用。如果这是一个语法错误或者我只是愚蠢,我不确定会出现什么问题。任何帮助将不胜感激提前感谢。

$uslog = cure($_COOKIE['userloggedin']);
$ushas = cure($_COOKIE['uservalue']);
function cure($data) { 
  $data = trim($data); 
  $data = stripslashes($data); 
  $data = htmlspecialchars($data); 
  return $data; 
}
$query = "SELECT friends FROM `memberHandler` WHERE `username`='$uslog' AND `hash`='$ushas'";
$result = mysqli_query($connect, $query);
if(mysqli_num_rows($result) != 1){
    die("Could not find user match");
}

1 个答案:

答案 0 :(得分:0)

您需要对查询更加安全,并且应该使用基于PDO的查询的绑定变量。您还需要使用以下变量 - 使用连接和双引号:

 $query = "SELECT friends FROM `memberHandler` WHERE `username`=' " . $uslog . " ' AND `hash`=' " . $ushas . " ' ";

如果您使用的是绑定参数,那么它将是:

$query = "SELECT friends FROM `memberHandler` WHERE `username`=:uslog  AND `hash`= :ushas ";

然后你将绑定的变量绑定为(注意由于op不使用PDO而没有其他代码部分)

$query -> bindValue(":uslog  " , $uslog  , PDO::PARAM_STR);
$query -> bindValue(":ushas" , $ushas, PDO::PARAM_STR);