2013-06-24 3 views
0

У меня есть PHP многомерный массив как это:обновление MySQL таблицы с массивом PHP

username_1, user_state, user_score, user_views, ... 
username_2, user_state, user_score, user_views, ... 
username_3, user_state, user_score, user_views, ... 
username_4, user_state, user_score, user_views, ... 
................................................... 

Я мог бы написать цикл в PHP, но с несколькими сотнями пользователей, я не хочу, чтобы ударить MySQL БД для каждого пользователя. Вместо этого я хочу как-то передать массив в MySQL и позаботиться обо всех обновлениях.

Теперь, на SQL Server, я мог бы написать хранимую процедуру, чтобы позаботиться обо всем этом, но какой был бы самый эффективный/простой способ позаботиться об этом в MySQL?

(я сделал Google это, но большинство из них цикл в PHP вместо MySQL.)

+0

'Mysql' также поддерживает' хранятся procedure.' –

ответ

0

я думаю, что лучше, чтобы избежать хранимой процедуры. Я скажу вам одно решение. Mysql поддерживает вставку нескольких записей в одном запросе. Таким образом, вы делаете одно, пишите цикл for в своей php-программе и создаете один большой запрос для вставки в базу данных, после чего для цикла выполняется этот запрос.

+0

Я обновить, не вставить. Используется ли ваше решение? – user1831003

+0

Я думаю, что это возможно. можете ли вы, пожалуйста, обновить некоторые данные? И, пожалуйста, покажите мне, как вы хотите уточнить, что –

+0

Должно быть возможным, другой способ состоит в том, чтобы разделить отдельные запросы на ';' и отправить их на SQL-Server в виде большой отдельной строки. – quidage

0
$sql="update tablename set username_1='demo', user_state='active', user_score='100', user_views='20' where id='1'"; 
    mysql_query($sql); 
0
  1. Вы можете использовать REPLACE вместо UPDATE, который имеет тот же синтаксис, как INSERT (так что вы можете обработать несколько записей в одном запросе): http://dev.mysql.com/doc/refman/5.5/en/replace.html

  2. Вы также можете использовать подготовленные заявления: http://php.net/manual/en/pdo.prepare.php