Вы правильно используете массивы здесь, даже если странным образом. Ваша главная проблема в том, что, как вы это делаете, вы нарушаете запрос:
INSERT INTO news_comments (news_id,comment_by,comment_date,comment) VALUES (17263,Philip,2010-05-11 06:45:23,i want to leave a comment)
Строковые значения должны быть заключены в кавычки следующим образом:
INSERT INTO news_comments (news_id,comment_by,comment_date,comment) VALUES (17263,'Philip','2010-05-11 06:45:23','i want to leave a comment')
Технически, если вы помещаете кавычки вокруг своих чисел, это не будет иметь значения, поскольку MySQL должен преобразовывать их в числа по мере необходимости. Итак, ваш код должен быть примерно таким:
$query = "INSERT INTO $tbl (".implode(',',array_keys($data)).") VALUES ('".implode("','",array_values($data))."')";
Обратите внимание на дополнительные '
цитаты во второй array_implode
. Это обернет каждое значение одинарной кавычкой, что позволит использовать его в базе данных.
Обратите внимание, однако, что если какое-либо из значений содержит '
, то оно сломается. Вы должны избегать их, обычно используя двойное, превращая его в ''
. если вы используете mysql_escape_string , он позаботится обо всем этом за вас, но это должно быть сделано для каждого отдельного значения.