![](/img/trans.png)
[英]How do you correctly use multiple instances of str_to_date with MySQL insert statement?
[英]How to use STR_TO_DATE with INSERT INTO in MYSQL
我想要做的是在我的數據庫中導入CSV文件。 CSV文件的第一列(名為mydate
包含此格式的日期mdY H:i:s
。 我正在嘗試從php中的表單插入文件。 這是代碼:
if(isset($_POST["Import"])){
$filename=$_FILES["file"]["tmp_name"];
if($_FILES["file"]["size"] > 0){
$file = fopen($filename, "r");
while (($getData = fgetcsv($file, 10000, ",")) !== FALSE){
$conn=getdb();
$sql = "INSERT into pay (Mydata,ID,Transaction,ReceiptNo,ServiceID,)
values (STR_TO_DATE(Mydata, '%m.%d.%Y %H:%i:%s'),'".$getData[1]."','".$getData[2]."','".$getData[3]."','".$getData[4]."')";
它導入除第一列之外的所有列中的數據。 我無法理解我做錯了什么。 我在STR_TO_DATE
和INSERT INTO
看到了很多例子,我認為我寫它的方式是正確的。 但仍然行不通。
你可以這樣做
$sql = "INSERT into pay (Mydata,ID,Transaction,ReceiptNo,ServiceID,)
values (date('m/d/Y H:i:s', strtotime(MyData)),'".$getData[1]."','".$getData[2]."','".$getData[3]."','".$getData[4]."')";
我通過使用LOAD DATA INFILE解決了這個問題。
這是我使用的代碼:
if(isset($_POST["Import"])){
$filename=str_replace("\\", "/", $_FILES["file"]["tmp_name"]);
if($_FILES["file"]["size"] > 0){
$conn=getdb();
$sql = "LOAD DATA LOCAL INFILE '".$filename."'
INTO TABLE pay
FIELDS OPTIONALLY ENCLOSED BY '\"' TERMINATED BY ','
LINES TERMINATED BY '\\n'
(@Mydata,ID,Transaction,ReceiptNo,ServiceID)
SET Mydata = STR_TO_DATE( @Mydata, '%m.%d.%Y %H:%i:%s')";
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.