2014-12-24 76 views
0

我有一個這樣的查詢:SQL請求語法

$modifiedDate1 = date("F d Y H:i:s.", filemtime($file)); 
$query = "INSERT IGNORE INTO file (filename, modifiedDate1) VALUES ".implode(',', $filenames)."".$modifiedDate1.""; 

我有我的SQL語法錯誤我的第二個值,爲什麼呢?

錯誤:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'January 01 1970 01:00:00.' at line 1 

如果它可以幫助整個代碼爲:

$pdo = new PDO('mysql:host=localhost;dbname=check', 'root', 'root'); 

if ($handle = opendir('check')) { 

    /* This is the correct way to loop over the directory. */ 
    while (false !== ($file = readdir($handle))) { 
     if($file!='.' && $file!='..') { 
      $filenames[] = "('".$file."')"; 
     } 
    } 

    closedir($handle); 
} 

$modifiedDate1 = date("F d Y H:i:s.", filemtime($file)); 

/* insert new record into the table filenames with the filename */ 
$query = ("INSERT IGNORE INTO file (filename,modifiedDate1) VALUES ('".implode(',', $filenames)."".$modifiedDate1."')"); 

$stmt = $pdo->exec($query); 
    if (!$stmt) { 
    echo "\nPDO::errorInfo():\n"; 
    print_r($pdo->errorInfo()); 
} 
    print "finished installing your files!"; 

此代碼是如果數據庫中已存在的文件的數據進行比較。

+0

請編輯你的問題,並解釋更多。 – NimaNr

+0

@NimaNr好的,那是做 – maevy

回答

0

首先,我建議使用PDOMySQLi所以你可以放心地逃脫你的字符串,以避免SQL注入。

此外,它看起來像你的$try變量qouted但我懷疑這是錯誤,請vardump您$try或echo,並顯示您的內容,所以我可以更新我的答案。

編輯:

在查詢截至目前還沒有采用單qoutes'到qoute您的變量。 這個:'".implode(',', $filenames)."".$modifiedDate1."'";應該可以工作。

+0

我更新了我的代碼,以清除它。我的變量var_dump顯示一個日期,這就是我想要的 – maevy

+0

你的編輯不起作用。實際上,當我保持第一個語法,並且我什麼也沒有放入變量中時,我沒有任何錯誤。當我把字符串或日期放入它時,錯誤就在這裏。爲什麼變量內容會導致錯誤? – maevy

+0

@maevy是插入到日期時間列中的列嗎?因爲那些不處理使用1月1日1970年01:00:00而是隻有IE瀏覽器2014年11月4日16時45分35秒 –