這裏是代碼。 $ fieldNamesA和$ fieldValsA在foreach循環創造了從POST變量:PHP mysqli編寫的插入語句失敗
$fieldNamesS = implode(',',$fieldNamesA);
$fieldValsS = implode(',',$fieldValsA);
$mysqli = new mysqli('localhost', 'user', 'pw', 'db');
mysqli_report(MYSQLI_REPORT_ALL);
$stmt = $mysqli->prepare('INSERT INTO users (?) VALUES (?)');
if ($stmt === FALSE) {
die ("Mysql Error: " . $mysqli->error);
}
$stmt->bind_param('ss', $fieldNamesS,$fieldValsS);
$stmt->execute();
printf("%d Row inserted.\n", $stmt->affected_rows);
/* close statement and connection */
$stmt->close();
下面是錯誤封郵件:
Fatal error: Uncaught exception 'mysqli_sql_exception' with message '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 '?) VALUES (?)' at line 1' in userreg.php:47
Stack trace:
#0 userreg.php(47): mysqli->prepare('INSERT INTO use...')
#1 {main}
thrown in /userreg.php on line 47
我不明白爲什麼它被抱怨有什麼不對我的插入語句。如果我對列/字段名稱進行硬編碼,則會出現列數與值數不匹配的錯誤,這是不正確的。我var_dumped變量只是爲了確保它們具有相同數量的參數。
我硬編碼的列名稱,我得到一個錯誤,指出值的數量不匹配的列,我加倍檢查,並找不到任何錯誤。 – hornswoggle
您是否確定每個專欄有一個佔位符(請參閱Chris Hanson的上面的答案) – Drew