【发布时间】:2018-02-22 01:41:32
【问题描述】:
我的 sql 选择查询在 phpmyadmin 中有效,但在我的 php 代码中无效。这是我的代码。请帮助我找到解决方案。提前感谢您的帮助
$conn=mysqli_connect("localhost","root","");
if(!$conn) {
die(mysqli_error());
}
$db=mysqli_select_db($conn,"dbname");
if(!$db) {
die(mysqli_error());
}
$to_date=$_REQUEST['to_date'];
$r_date=$_REQUEST['date'];
$role=$_REQUEST['role'];
$user_name=$_REQUEST['user'];
if($_REQUEST['role']='all'||$_REQUEST['role']="") {
$sql="SELECT *
FROM `daily_log`
WHERE date BETWEEN '$r_date'AND '$to_date'
AND category='Activity'";
}else{
$sql="SELECT *
FROM `daily_log`
WHERE category='Activity'
AND assigned_to = '$user_name'
AND date BETWEEN '$r_date' AND '$to_date'";
echo $sql;
}
$exe=mysqli_query($conn,$sql);
$i=1;
while($row=mysqli_fetch_array($exe)) {
...table rows..
}
【问题讨论】:
-
$_REQUEST['role']='all'||$_REQUEST['role']=""这些是分配,而不是比较。 -
您已经在使用支持 prepared statements 的 API 和有界变量输入,您应该使用带占位符的参数化查询(prepared statements)来保护您的数据库免受SQL-injection !开始使用
mysqli::prepare()和mysqli_stmt::bind_param()。 -
您应该自己进行调试并发布相关的错误消息。使用
mysqli_error()从 MySQL 获取任何错误,并使用error_reporting(E_ALL); ini_set('display_errors', 1);查找任何 PHP 错误。 -
一些合理的代码缩进是个好主意。它可以帮助我们阅读代码,更重要的是,它将帮助 您调试代码 Take a quick look at a coding standard 为您自己谋福利。您可能会被要求在几周/几个月内修改此代码,最后您会感谢我的。
-
哪个查询不起作用?
标签: php mysqli phpmyadmin