Я все еще изучаю PHP и MYSQL и пытаюсь сделать программу для перечисления всех таблиц и данных в базе данных (это сделано), отредактируйте выбранную строку (это сделано) и теперь добавьте новую запись в выбранную таблицу. Теперь проблема связана с переменным числом полей. Таблица может быть с 3 полями, может быть 4 и так далее. В моем коде здесь $ getValue – это массив. Я печатаю его только для тестирования. Он может выглядеть так: «Array ([name] => Tomas [lastName] => Timas») или «Array ([stufName] => Телефон [stufPrice] => 58 [comments] => Мой новый телефон») $ getTable возвращает имя таблицы для вставки. Это должна быть новая запись в таблице, поэтому stufID или nameID или какой-либо идентификатор будет NULL. Как использовать «INSERT INTO table VALUES (value1, value2, value3, …)», если я не знаю номер ценностей?
<?php include "conf.ini"; //connection to the db $getValue=$_REQUEST['value']; $getTable=$_REQUEST['table']; // test******************** print_r($getValue); print '<br>'; print $getTable; // test******************** if (!$_POST['submit']) { print 'Please input data'; } else { mysql_query ("INSERT INTO $getTable VALUES (?????)"); } ?>
Надеюсь, вы знаете, что это очень опасно , так что сделайте это, только если вы уверены, что нет потенциальных атакующих!
$all_keys = array_keys($getValue); $getValue = array_map('mysql_real_Escape_string', $getValues); mysql_query ("INSERT INTO $getTable (`".implode('`,`', $all_keys)."`) VALUES ('".(implode(",", $getValue))."')");
$values = array_map('mysql_real_escape_string', array_values($getValue)); $keys = array_keys($getValue); mysql_query("INSERT INTO $getTable (".implode(',', $keys).") VALUES ('".implode('\',\'', $values)."')");
Возможно, вы должны создать файл include для выполнения значений для $ gettables, а затем включить туда, где вы хотите получить значения $ gettables.