2015-09-11 25 views
1
$shippedtime = DateTime::createFromFormat('m/d/y',$csv[$j][3],$timezone); 
// $shippedtimeformat = strtotime($shippedtime->format('Y-m-d')); 
//$shippedtime2 = $shippedtimeformat->modify('-1 day'); 
//$shippedtime3 = $shippedtimeformat->modify('-2 day'); 
//$shippedtime4 = $shippedtimeformat->modify('-3 day'); 
$name = mysqli_real_escape_string($mysqli, $csv[$j][8]); 
//original query 
$query = $mysqli->prepare("SELECT * FROM orders where ShippingName = '" . $name . "' AND ShippedTime LIKE '" . $shippedtime->format('Y-m-d') ."%'"); 

我想以正確的格式得到過去3天,所以我可以在下面的MYSQL查詢中運行它們。但是,它們都沒有以正確的格式返回給MYSQL使用。如何獲得正確的日期格式,以便我可以運行查詢,以便如果名稱與AND匹配(發貨時間類似於%)或(發貨時間-1類似%)或(當前時間-2類似%)或(當前時間-3喜歡 %)?在PHP中的日期時間

+0

綁定參數,連接SQL查詢是第一步** SQL注入** – lad2025

回答

1

我同意@ lad2025你應該綁定參數。既然你沒有要求,我會用一個串聯的查詢來回答它。如果orders.ShippedTime是DateTime字段,則不能使用LIKE。這是字符串字段。相反,請使用BETWEEN。

$name = str_replace("'", "''", $name) // sanitize $name 
$query = $mysqli->prepare(
    "SELECT * 
    FROM orders 
    WHERE ShippingName = '" . $name . "' AND 
     ShippedTime BETWEEN '" . $shippedtime->format('Y-m-d') ."' AND 
     '" . $shippedtime->format('Y-m-d') . " 23:59:59.999'"); 

注意:如果您沒有指定時間,MySQL會假定當天是午夜。

+0

$ shippedtime是從CSV文件讀入的日期。如何將$ shippingtime修改爲未來3天? – rbur0425

+0

使用date_add()函數:http://php.net/manual/en/function.date-add.php –

+0

謝謝...這是一個守護進程服務器端腳本,所以我沒有綁定參數由於輸入被控制,不應該是任何惡意的格式化輸入 – rbur0425