我寫了一個功能不工作SQL插入我想要的任何數據庫:PDO - 沒有任何警告
public function insert($db, $array_label, $array_value){
$DB = new PDO('mysql:host='.$_SESSION['mysql'][0].';dbname='.$_SESSION['mysql'][1].';charset=utf8', $_SESSION['mysql'][2], $_SESSION['mysql'][3]);
$sql = "INSERT INTO '".$db."' (";
for($i = 0; $i < count($array_label); $i++){
if($i > 0)
$sql .= ", ";
$sql .= "'".$array_label[$i]."'";
}
$sql .= ") VALUES (";
for($i = 0; $i < count($array_label); $i++){
if($i > 0)
$sql .= ", ";
$sql .= ":".$array_label[$i];
}
$sql .= ")";
$stmt = $DB->prepare($sql);
echo '\$DB->prepare("'.$sql.'");';//DEBUG
for($i = 0; $i < count($array_label); $i++){
$label = ":".$array_label[$i];
$stmt->bindParam("$label", $array_value[$i]);
echo '</br>\$stmt->bindValue("'.$label.'", '.$array_value[$i].')';//DEBUG
}
$stmt->execute;
echo "</br></br>Requête OK.";
}
}
然後,我用這樣的:
$array_label = array('ID', 'ID_lang', 'ID_entry_cat', 'date', 'label', 'content');
$array_value = array($ID, $ID_lang, $ID_entry_cat, "2016-03-03 00:00:00", $label, $content);
$DB->insert('entry', $array_label, $array_value);
經過大量測試後,可能會出現語法問題,但我無法弄清楚在哪裏。
這是我自回波的(// DEBUG)有:
$DB->prepare("INSERT INTO 'entry' ('ID', 'ID_lang', 'ID_entry_cat', 'date', 'label', 'content') VALUES (:ID, :ID_lang, :ID_entry_cat, :date, :label, :content)");
\$stmt->bindValue(":ID", 1)
\$stmt->bindValue(":ID_lang", 1)
\$stmt->bindValue(":ID_entry_cat", 1)
\$stmt->bindValue(":date", 2016-03-03 00:00:00)
\$stmt->bindValue(":label", dsqfsdq)
\$stmt->bindValue(":content", sdqfdsqf)
我知道有關於PDO沒有返回錯誤很多話題,但是: 閱讀他們中的很多後,沒」根本無法幫助我。讓我們這樣說吧:我是一個完全的PDO的noob。
我向你展示的回聲是我的功能在做什麼。
我封閉我的數據庫的一些圖片,以幫助:
PS:我闊葉去「約會」,但它不應該鬧事。我用它測試了同樣的東西,它也做了同樣的事情:沒有。
'$ stmt-> execute;'是一個錯字嗎? – apokryfos
在日期字段中不允許空值。你試圖放在那裏?什麼價值? – 2016-03-03 10:53:42
PhpMyAdmin填充該字段,如果你什麼都不放。 – Madz