если конкретная строка = ноль, выполнить запрос

0

как проверить, является ли значение столбца нулевым, и только затем выполнить запрос? например:

col1 col2 col3
01   abc  

Запустите запрос, который сначала проверяет, существует ли запись или нет; если он существует, он должен выполнить запрос на обновление, а если он не существует, он выполняет запрос вставки. как проверить, имеет ли col3 значение null, и если он равен null, он должен выполнить запрос на обновление..

$sql = "SELECT uid FROM `users` WHERE uid = '" . $user_id . "'";
    $result = mysql_query($sql,$conn) or die('Error:' .mysql_error());

    $totalrows = mysql_num_rows($result);
    if($totalrows < 1)
    {
        insertUser($user_id,$sk, $conn);

    }
    else
    {
        updateSessionKey($user_id,$sk,$conn);
    }
Теги:

3 ответа

0
Лучший ответ
$sql = "SELECT * FROM `users` WHERE uid = '" . $user_id . "'";
$result = mysql_query($sql,$conn) or die('Error:' .mysql_error());

$totalrows = mysql_num_rows($result);
if($totalrows < 1)
{
    $res = mysql_fetch_array($sql);

    if(!empty($res['col3'])) {

         insertUser($user_id,$sk, $conn);

    }

}
else
{
    updateSessionKey($user_id,$sk,$conn);
}
  • 0
    спасибо за указатель.
1

http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

Не проверять значение столбца, но я не думаю, что вам это действительно нужно.

У вас должен быть uid как столбец UNIQUE. Вы пытаетесь вставить строку для нового пользователя с данным uid; если он находит пользователя с тем же uid, то вы делаете обновление вместо этого.

UPDATE:

Я думаю, вы не удосужились прочитать ссылку.

Я не тестировал его, но это должно быть примерно так:

INSERT INTO users (uid, name, session)
VALUES ('login', 'Real Name', 'SeSsIoN_iD')
ON DUPLICATE KEY UPDATE session='SeSsIoN_iD'

Это добавит пользователя, если он не существует, и если он это сделает, он установит новый ключ сеанса. ИЛИ, если вы хотите сохранить старый ключ сеанса, если он уже имеет один,

INSERT INTO users (uid, name, session)
VALUES ('login', 'Real Name', 'SeSsIoN_iD')
ON DUPLICATE KEY UPDATE session=IFNULL(session, 'SeSsIoN_iD')

Один запрос, а не три. Вы еще этого не делали.

  • 0
    я уже делаю это Мне нужно именно то, что я спросил.
  • 0
    Судя по вашему фрагменту, вы этого еще не сделали, и, вероятно, вы даже не открыли ссылку. Я обновил ответ с явными инструкциями.
Показать ещё 1 комментарий
-1

Это то, что вы имеете в виду?

  • Если запись не существует → insert.
  • Если запись существует и ее col3 имеет значение null → update
  • Если запись существует, но ее col3 не null → ничего не делать?

Это может быть достигнуто как это (untested):

$sql = "SELECT uid, col3 FROM `users` WHERE uid = '" . $user_id . "'";
$result = mysql_query($sql,$conn) or die('Error:' .mysql_error());

$totalrows = mysql_num_rows($result);
if($totalrows < 1)
{
    insertUser($user_id,$sk, $conn);
}
else
{
    $col3value = mysql_result($result, 0, 'col3');
    if (is_null($col3value))
    {
        updateSessionKey($user_id,$sk,$conn);
    }
}
  • 0
    попробовал это. каким-то образом, даже если значение равно нулю, оно не переходит к оператору if. что-то не так?
  • 0
    Код выглядит так, как будто он должен работать ... Вы изменили col3 на настоящее имя столбца везде? В противном случае вы можете попробовать $ col3value = mysql_fetch_array ($ result) -> ['col3']; с замененным именем, конечно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню