2015-07-22 4 views
0

У меня есть таблица без индекса AI. Мне пришлось обрезать данные из colum, и теперь мне нужно обновить результат из trim, но теперь с треском, которую я имею, только обновления с тем же значением, последнее значение из этого массива.Как обновить таблицу с данными из массива?

$i=0; 
while ($row = $column->fetch_assoc()) { 
$arr[$i] = trim($row['profile_value'],"\""); 
$db->query("UPDATE `vwfl5_user_profiles` SET profile_value='".$arr[$i]."'"); 
$i++; 
} 

Спасибо!

+0

что вы хотите сделать. четко указать. ваш вопрос неясен. –

+2

у вас нет предложения 'where', поэтому вы обновляете каждую запись в этой таблице. и поскольку вы делаете это в цикле, только последнее значение, используемое в цикле, останется в таблице, так как теперь вы удалили все предыдущие обновления. –

ответ

2

Вам не нужен цикл для этого. Просто сделайте это с одним запросом.

$db->query("UPDATE `vwfl5_user_profiles` SET profile_value= TRIM('\"' FROM profile_value)"); 

Если вы не хотите, чтобы обновить каждую запись, просто добавить ИНЕК с любыми критериями, которые вы использовали, чтобы получить результаты, которые вы цикл над.

$db->query("UPDATE `vwfl5_user_profiles` 
    SET profile_value = TRIM('\"' FROM profile_value) WHERE... "); 
+0

лучше, чем у меня ... – urban

+0

OP обрезает '' '->' trim ($ row ['profile_value'], "\" ")', где MySQL ['TRIM()'] (https: // dev. mysql.com/doc/refman/5.0/en/string-functions.html#function_trim) - ['Удалить начальные и конечные пробелы'] (https://dev.mysql.com/doc/refman/5.0/en/string -functions.html # function_trim) – Sean

+0

К сожалению, полностью пропустил этот второй аргумент trim. Спасибо, @Sean. –

0

2 вещи:

  1. Если вы не обновляете конкретную строку? То есть: "UPDATE `vwfl5_user_profiles` SET profile_value='".$arr[$i]."' WHERE id=$row[id]" (учитывая есть идентификатор и целое число)
  2. Я думаю, что вы можете сделать это с Trim Function
+0

нет уникального идентификатора, и что user_id не уникален. Я знаю, как использовать Where, но dosn't не работает в моем случае –

+0

Я думаю, что вам нужен первичный ключ, даже если он логичен и не объявлен в MySQL, т.е. WHERE '' 'email = '$ row [12] 'и name =' $ row [4] ''' '. Все, что указывает на то, что вы обновляете определенную строку. Else, решение @DontPaniC# 1 должно работать. – urban

0

Вы должны добавить ИНЕКЕ с таблицей первичного ключа для идентификации каждого элемента в БД:

$i=0; 
while ($row = $column->fetch_assoc()) { 
$arr[$i] = trim($row['profile_value'],"\""); 
$db->query("UPDATE `vwfl5_user_profiles` SET profile_value='".$arr[$i]."' WHERE id = " . $row['id'] . ""); 
$i++; 
}