2013-10-06 6 views
0

배열을 SQL 쿼리와 함께 사용하고 결과를 반복 할 수 있습니까? 여기배열을 사용하는 mysqli 매개 변수화 된 쿼리

내가 뭘 찾았는지,하지만 난 내 쿼리에서 내파 변수를 사용하는 방법을 정말 잘 모르겠어요

<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']; 

어떤 도움이 가장 감사하게 될 것입니다!

답변

0

매개 변수는 하나의 단일 스칼라 값만 사용할 수 있습니다. 값 목록이 아닙니다.

목록을 매개 변수화하려면 목록의 요소 수와 동일한 매개 변수가 필요합니다.

그러나 mysqli는 가변 개수의 요소와 함께 bind_param()을 사용하는 것을 매우 어렵게 만듭니다. 그 이유는 bind_param()은 인자를 인자로 전달해야하기 때문에 배열을 전달할 수 없다. 당신은 참조 배열을 전달해야합니다. 로얄 PITA입니다.

대신 PDO를 사용하는 것이 훨씬 쉽습니다. PDOStatement::execute() 메소드에 값 배열을 전달하기 만하면되기 때문입니다.