Как уже сказал @a_horse_with_no_name
, вам нужно использовать оператор конкатенации строк или, как я бы предпочел, использовать concat_ws
, поскольку +
для числовых операций.
Но есть двабольше выдает в вашем примере.Прежде всего, вы используете переменную для помещения строки в SQL-запрос.В целом это будет работать, но вам нужно поместить переменные в кавычки '
, чтобы получить корректную строку sql.Например:
$sql = "UPDATE card SET notes = concat_ws('---', '{$v[0]}', notes) WHERE product = '{$v[1]}'";
Это позволит вам создать правильно отформатированный SQL-оператор.Но это все равно плохо, потому что, как я упоминал в комментариях, вы никогда не должны напрямую помещать введенный пользователем контент в запрос к базе данных.Даже если он используется только для внутренних целей.Это был бы не первый случай, когда недружелюбный сотрудник хотел бы нанести вред внутренним данным.
Но даже если это не предназначено, это может нарушить ваш сценарий.Если значение $v[0]
или $v[1]
содержит одну кавычку '
, SQL-запрос станет недействительным.Поэтому, пожалуйста, избегайте значений, прежде чем помещать их в запрос.Для postgres
вы можете использовать pg_escape_string
в php.Или, может быть, у вашего класса есть собственная функция для этого.Но вот как это выглядит:
$note = pg_escape_string($_POST['note']);
$product = pg_escape_string($_POST['product_id']);
$sql = "UPDATE card SET notes = concat_ws('---', '{$note}', notes) WHERE product = '{$product}'";