Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.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 使用数组的mysqli参数化查询_Php_Mysql_Sql_Arrays_Mysqli - Fatal编程技术网

Php 使用数组的mysqli参数化查询

Php 使用数组的mysqli参数化查询,php,mysql,sql,arrays,mysqli,Php,Mysql,Sql,Arrays,Mysqli,如何将数组与sql查询一起使用,然后在 结果如何 这是我得到的,但我不确定我应该如何使用 查询中的内爆变量 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <titleard Log</title> <link rel="stylesheet" type="text/css" media="all" href="jsD

如何将数组与sql查询一起使用,然后在 结果如何

这是我得到的,但我不确定我应该如何使用 查询中的内爆变量

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<titleard Log</title>
<link rel="stylesheet" type="text/css" media="all" href="jsDatePick_ltr.min.css" />
<script type="text/javascript" src="jsDatePick.min.1.3.js"></script>
<script type="text/javascript">
 window.onload = function() { new JsDatePick({ useMode:2, target:"inputField", dateFormat:"%d-%m-%Y" }); new          JsDatePick({ useMode:2, target:"inputField2", dateFormat:"%d-%m-%Y" }); }; 
</script>
</head>
<body>   

 <form action="#" method="post"> 
 <input type="checkbox" name="driver[]" value="Julia">Julia 
 <input type="checkbox" name="driver[]" value="Pete">Pete From 
 <input type="text" name="date1" size="12" id="inputField" /> To 
 <input type="text" name="date2" size="12" id="inputField2" /> 
 <input type="submit" value="Submit" name="submit"/> 
 </form> 

<?php 
if(isset($_POST['submit']) && ($_POST['submit'] == "Submit")) 
{ 
$date1 = $_POST['date1'];
$date2 = $_POST['date2'];
$date1 = date("Ymd", strtotime($date1));
$date2 = date("Ymd", strtotime($date2));
$drivers = "'".implode("','",$_POST['driver'])."'";
}

$mysqli = new mysqli('' );

if($mysqli->connect_error)
echo {
die("$mysqli->connect_errno: $mysqli->connect
_error");
}

$query = "SELECT * FROM wizardlog WHERE driver IN (?) AND date between ? and ? ";

$stmt = $mysqli->stmt_init();
if(!$stmt->prepare($query))
{
print "Failed to prepare statement\n";
}
else
{
              $stmt->bind_param("sss", $drivers, $date1, $date2);
              $stmt->execute();
            $result = $stmt->get_result();
            while ($row = $result->fetch_array(MYSQLI_ASSOC))
        {
            foreach($rows as $row) 
        { 
        $id = $row['id'];
        $driver = $row['driver'];
        $date = date("d/m/y", strtotime($date));
         $time = $row['time'];
          $time = substr($time, 0, 5);
        $fname = $row['fname'];
        $lname = $row['lname'];
        $town = $row['town'];


一个参数只能代替一个标量值。不是价值清单

要参数化列表,您需要的参数数量等于列表中元素的数量

但是mysqli使得它很难与数量可变的元素一起使用。原因是bind_param()需要通过引用传递参数,所以不能只传递数组;您需要传递一个引用数组。这是皇家皮塔

相反,使用PDO要容易得多,因为这样您就可以简单地将一个值数组传递给该方法