КОНКАТ, но если уже сделано, игнорировать - PullRequest
1 голос
/ 29 марта 2019

Я хотел бы добавить звездочку (*) после имени человека, если часть информации о профиле устарела.

Дональд

$stmt = $conn->prepare("UPDATE contacts SET name = concat(name, '*') WHERE phone = ?");
$stmt->bind_param("s",$phone);
$stmt->execute();

Дональд *

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

Каким будет решение, чтобы проверить, если в имени уже есть звездочка, и если да, ничего не делать?

Ответы [ 2 ]

2 голосов
/ 29 марта 2019

Вы можете использовать right(), чтобы проверить, является ли последний символ *, и обновлять строки только в том случае, если это не так.

UPDATE contacts
       SET name = concat(name, '*')
       WHERE phone = ?
             AND right(name, 1) <> '*';
0 голосов
/ 29 марта 2019

Одним из способов является использование условного теста в выражении, которое выводит новое значение.например,

UPDATE contacts
   SET name = CONCAT(name, CASE 
                             WHEN name LIKE '%*' THEN ''
                             ELSE '*'
                           END
              )     
 WHERE phone = ?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...