После обновления SQL поле установлено в 0 [PHP/MySQL]

62
6

Хорошо, я в настоящее время болен, поэтому, возможно, ответ прямо передо мной, но я сижу здесь последние 4 часа, пытаясь понять, почему это происходит.

В основном у меня есть сценарий, который должен обновить строку в базе данных. Поле, которое я пытаюсь обновить, это "имя", и оно выглядит так:

// Updating the database with the new name
$name = $this->db->slashes( $this->friends[$row->key] );
$sql = "UPDATE 'friends' SET 'name' = '" . $name . "' AND 'status' = 'updated' WHERE 'key' = " . $row->key . " LIMIT 1";
echo '-- Query: ' . $sql . '<br />';
$result2 = $this->db->query( $sql );

if( !$result2 )
echo mysql_error();

Результат становится таким (пример):

-- Query: UPDATE 'friends' SET 'name' = 'Andrew Johnsson' AND 'status' = 'updated' WHERE 'key' = 7823583 LIMIT 1

Он не генерировал mysql_error, поэтому запрос, похоже, прошел должным образом и по внешнему виду запроса, он должен был просто обновить строку в базе данных, где ключ был числом, и установить новое имя Эндрю Джонсону, а также установить статус обновлен.

Однако! После поиска в базе данных после этого обновления имя для этой строки будет установлено в '0'. Почему это так?

Любые идеи относительно того, почему это происходит? Кроме того, скажите мне, нужна ли вам дополнительная информация, чтобы помочь мне, и я любезно предоставил ее!

спросил(а) 2021-01-28T00:31:00+03:00 3 месяца, 1 неделя назад
1
Решение
87

Неправильный синтаксис UPDATE. Это должно быть SET name = 'string', status = 'updated' WHERE key...

В настоящее время вы буквально просите его оценить AND, чтобы определить, что нужно обновить столбец имен, поэтому вы получаете 0.

ответил(а) 2021-01-28T00:31:00+03:00 3 месяца, 1 неделя назад
44

Ну, это может быть слишком глупо, но name - это поле строки, не так ли? Если он задан для любого целого поля, это именно то, что произойдет: строка анализируется как 0.

Я уверен, что это нечто более сложное, чем это.

ответил(а) 2021-01-28T00:31:00+03:00 3 месяца, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема