Я пробовал обе ссылки, но я не получаю ожидаемые значения переменных в $ fields и $ newdata
** Этот вопрос возник в новом здесь ** PHP, как извлечь имена ключей и значения из ассоциативного массива для запроса mysql (как объяснялось, что я новичок, и потребовалась некоторая работа, чтобы правильно задать вопрос)
поэтому я любезно напечатаю здесь несколько var_dump и бросил, чтобы любезно попросить вашу поддержку.
Для простоты моего эксперимента обучения я работаю с фиктивной таблицей из 5 полей, как вы видите, это: selected
, user_id
, user_company
, user_company
и user_email
. Наконец, я ввел только 2 строки значений.
Использование этого кода
$Arr = (array)$data; print_r ( $Arr );
Я вижу этот вывод
Array ( [0] => Array ( [selected] => [user_id] => 3 [user_name] => nome3 [user_company] => azien3 [user_email] => email3 ) [1] => Array ( [selected] => 1 [user_id] => 6 [user_name] => nome6 [user_company] => azien6 [user_email] => email6 ) )
Далее я пытаюсь применить код ваших ссылок
24 $fields = implode(",", array_keys($Arr)); 25 $newdata = "'" . implode("','", $Arr) . "'"; 26 27 var_dump($fields); 28 echo "<br><br>"; 29 var_dump($newdata);
Но что-то не так в моей интерпретации или в моем коде, потому что вывод
Примечание. Массив для преобразования строк в D: \ xampp \ htdocs \ ajax-json \ post.php в строке 25 Примечание. Массив для преобразования строк в D: \ xampp \ htdocs \ ajax-json \ post.php в строке 25 строка (3) "0,1" string (15) "'Array', 'Array'"
можете ли вы любезно указать, что не так? например, мой массив правильно сформирован?
ОРИГИНАЛЬНЫЙ ВОПРОС
Я новичок, и после дальнейших чтений я понял, что теперь мой вопрос может быть более простым. Спасибо за любой намек.
У меня есть двумерный массив, поскольку его записи поступают из таблицы html.
Коллекция, созданная на стороне html, генерирует ассоциативный массив, поэтому каждая строка похожа на следующий пример, где, также, вы можете видеть, что ключей много
[item] => Array ( [0] => Array ( [unit] => "car" [qty] => 3 [description] => "Description 1" .... [key47] => "thin" ) [1] => Array ( [unit] => "bike" [qty] => 74 [description] => "Description 2" .... [key47] => "large" ) )
Имя таблицы mysql, где я хочу вставить элементы, называется items_table
«единица» «qty» и «описание», а все остальные ключи (всего 47) – это точно такие же имена столбцов items_table
Когда на стороне php я хотел бы иметь своего рода автоматическое создание запросов, возможно, с PDO, который будет выбирать имена столбцов из имен внутренних ключей массива и вставляет соответствующее значение ключа в правильный столбец.
Цель состоит в том, чтобы избежать создания такого неудобного и чрезвычайно длинного запроса.
Предпочтительный метод должен быть с PDO, избегать связывания 47 ключей.
Этот вид автоматизма также полезен, потому что в будущих столбцах таблицы mysql могут быть добавлены, удалены и переименованы, поэтому я хотел бы забыть о запросе, думающем только о правильном редактировании таблицы html (с этой стороны массив уже автоматически создается с помощью некоторого javascript)
Как вы думаете, можно ли это сделать?
Если да, то как?
Требуется ли для этого еще какой-то цикл foreach?
Спасибо за помощь
Например:
core_table id* unit quantity description 1 car 3 Description 1 2 bike 74 Description 2 adjunct_table core_id* meta_key* meta_value 1 47 Description of key n.47 first row 2 47 Description of key n.47 second row * = (component of) PRIMARY KEY