Использование запятых в обновлении CONCAT php mysql - PullRequest
2 голосов
/ 31 марта 2012

Мне нужно выполнить запрос, подобный следующему:

<?php
//....connect to database
$old = "a,b,c,d";
$new = "e,f,g,h";

$insert = "UPDATE TABLE SET FIELD = CONCAT(" . $old . ", " . $new . ") WHERE something = 'something';
mysql_query($insert);
?>

Итак, я хочу добавить текущую запись в базу данных с помощью «новой» строки, содержащей запятые.Но так как функции CONCAT используют запятые, у меня возникли проблемы ..

У кого-нибудь есть какие-либо советы для этого?

Спасибо всем!

Ответы [ 4 ]

4 голосов
/ 31 марта 2012

Измените эту строку

 $insert = "UPDATE TABLE SET FIELD = CONCAT(" . $old . ", " . $new . ") WHERE something = 'something'";

на эту

$insert = "UPDATE TABLE SET FIELD = CONCAT('$old', '$new') WHERE something = 'something'";

Редактировать:

И если вы хотите запятую между строками $old и $newвы объединяете, используйте CONCAT_WS (http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_concat-ws)

Например:

 $insert = "UPDATE TABLE SET FIELD = CONCAT_WS(',', '$old', '$new') WHERE something = 'something'";
3 голосов
/ 31 марта 2012

Используйте функцию mysql CONCAT_WS() -> Объединить с разделителем

UPDATE TABLE_NAME SET FIELD_NAME = CONCAT_WS(",",FIELD_NAME,FIELD_NAME2) WHERE CONDITON
2 голосов
/ 31 марта 2012

строки в запросах SQL должны быть разделены кавычками.

$insert = "UPDATE TABLE SET FIELD = CONCAT(FIELD,',','$new') WHERE ...";

также нет смысла разбивать строку PHP, добавляя только бесполезный шум.

Кроме того, я чувствую запах случая нормализации базы данных

0 голосов
/ 31 марта 2012

Вам нужно добавить кавычки вокруг переменных, чтобы получить строки, например так (я также добавил завершающую двойную кавычку):

$insert = "UPDATE TABLE SET FIELD = CONCAT('" . $old . "', '" . $new . "') WHERE something = 'something'";
...