вставить в проблему MySQL - PullRequest
1 голос
/ 20 января 2009

У меня есть таблица с 2 полями (name, confirm). confirm имеет тип tinyint, потому что я хочу ввести 0 или 1

Теперь я хочу поставить 1 в confirm; это утверждение правильно?

if($row['confirm']==0)
{
    $query = "INSERT INTO opt (confirmed) values('0')";
    echo 'The user selected options has confirmed';
}

Ответы [ 4 ]

5 голосов
/ 20 января 2009

Выписанное вами утверждение верно только в том случае, если вы также хотите, чтобы ассоциированное поле 'name' было NULL.

Если вы действительно хотите, чтобы оба поля были заполнены, вы должны сделать:

INSERT INTO opt (name, confirmed) VALUES (?, ?)

, а затем используйте семейство функций mysqli или PDO, чтобы связать параметры ? с предоставленными пользователем значениями. Это необходимо для защиты базы данных от атак SQL-инъекций.

Я бы также рассмотрел добавление еще пары полей:

  • Уникальное поле id (MySQL's auto_increment подходит для этого), чтобы вы могли удалять и / или изменять определенные записи
  • Поле timestamp, чтобы вы получили запись (каламбур не предназначен), когда эти данные были добавлены
4 голосов
/ 20 января 2009

Действительно звучит, что вы хотите сделать обновление:

ОБНОВЛЕНИЕ opt SET подтверждено = 1 ГДЕ name = '$ row [name]'

правый

2 голосов
/ 20 января 2009

Когда «подтверждено» является числовым столбцом, вы не должны ставить кавычки вокруг 1.

INSERT INTO OPT (confirmed) VALUES (1)
0 голосов
/ 20 января 2009

Все, что было сказано в предыдущих постерах +: Если у вас есть только два возможных значения для «подтвержденного» поля, сделайте его ENUM.

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