PHP-> sql UPDATE строка с данными из 2 других строк, объединенных в одну и ту же таблицу - PullRequest
1 голос
/ 05 июля 2011

Таблица = местоположение Поля = адрес, улица, пригород

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

Причина, по которой я это делаю, заключается в том, что данные мне передаются именно в таком формате, и мне потребуется слишком много времени, чтобы сделать это вручную.

while ($row=$result->fetch_assoc()) {

    $street=$row['street'];
        $suburb=$row['suburb'];

        $mysqli->query("UPDATE address SET address = $street+$suburb");
        echo($street);
}
}

Ответы [ 4 ]

2 голосов
/ 05 июля 2011

Не забудьте добавить в запрос UPDATE предложение WHERE, если только вы не хотите, чтобы у всей таблицы был один и тот же столбец адреса. Попробуйте это

while ($row=$result->fetch_assoc()) {

        $street=$row['street'];
        $suburb=$row['suburb'];
        $address=$street." ".$suburb;
        $id=$row['id'];

        $mysqli->query("UPDATE address SET address = `".address."` WHERE id=".$id);

}
1 голос
/ 05 июля 2011

Попробуйте

 $mysqli->query("UPDATE address SET address ='". $street." ".$suburb."' WHERE street = '$street' AND subrub = '$subrub'");

+ не является оператором конкатенации в php. Поэтому попробуйте использовать .

Кроме того, если у вас нет предложения WHERE, тогда все строки будут обновлены !!!

1 голос
/ 05 июля 2011

Попробуйте с:

while ($row=$result->fetch_assoc()) {

    $street=$row['street'];
        $suburb=$row['suburb'];
    $address = $street.$suburb;

        $mysqli->query("UPDATE address SET address = '$address'");
        echo($street);
}
}
0 голосов
/ 05 июля 2011

Вам не нужно извлекать результаты в PHP, а затем запускать UPDATE для каждой строки.Похоже, вы сейчас отправляете в базу данных SELECT и многочисленные (тысячи или миллионы, в зависимости от размера вашей таблицы) операторов UPDATE.

Вы можете обновитьвсю таблицу (все строки!) с оператором one UPDATE:

"UPDATE location SET address = CONCAT(street, ' ', suburb) ;" 

Если (позднее) некоторые из ваших строк уже содержат данные в столбце address, вы можетеобновлять только строки с пустым адресом:

"UPDATE location
 SET address = CONCAT(street, ' ', suburb) 
 WHERE address = ''
    OR address IS NULL ;"  

Также следует убедиться, что размер поля address больше или по крайней мере равен максимуму CHAR_LENGTH(street) + CHAR_LENGTH(suburb) + 1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...