Mysql 如果specific row=null,则执行查询

Mysql 如果specific row=null,则执行查询,mysql,Mysql,如何检查列的值是否为null,然后才执行查询?例如: 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:'

如何检查列的值是否为null,然后才执行查询?例如:

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);
    }
$sql=“从'users'中选择uid,其中uid=”$用户id。"'";
$result=mysql\u query($sql,$conn)或die('Error:'.mysql\u Error());
$totalrows=mysql\u num\u rows($result);
如果($totalrows<1)
{
插入器($user_id,$sk,$conn);
}
其他的
{
updateSessionKey($user_id,$sk,$conn);
}

不是真的检查列的值,但我认为您实际上不需要这样做

您需要将
uid
作为
唯一列。您尝试使用给定的
uid
为新用户插入一行;如果它发现用户具有相同的
uid
,则改为执行更新

更新:

我猜你没有读链接

我没有测试它,但它应该是这样的:

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')
一个问题,而不是三个问题。你还没有这么做。

这就是你的意思吗

  • 如果记录不存在->插入
  • 如果记录确实存在且其col3为null->update
  • 如果记录确实存在,但其col3不是null->DoNothing
可以这样实现(未经测试):

$sql=“从'users'中选择uid,col3,其中uid=”$用户id。"'";
$result=mysql\u query($sql,$conn)或die('Error:'.mysql\u Error());
$totalrows=mysql\u num\u rows($result);
如果($totalrows<1)
{
插入器($user_id,$sk,$conn);
}
其他的
{
$col3value=mysql_result($result,0,'col3');
if(为null($col3value))
{
updateSessionKey($user_id,$sk,$conn);
}
}
$sql=“从'users'中选择*,其中uid=”$用户id。"'";
$result=mysql\u query($sql,$conn)或die('Error:'.mysql\u Error());
$totalrows=mysql\u num\u rows($result);
如果($totalrows<1)
{
$res=mysql\u fetch\u数组($sql);
如果(!empty($res['col3'])){
插入器($user_id,$sk,$conn);
}
}
其他的
{
updateSessionKey($user_id,$sk,$conn);
}

尝试了这个。不知何故,即使该值为null,它也不会转到if语句。有什么问题吗?代码看起来应该能用。。。你把col3变成了真正的列名?否则您可以尝试$col3value=mysql_fetch_array($result)->['col3'];当然换了名字,我已经在做了。我需要的是我问的具体内容。从你的代码片段来看,你还没有这样做,你甚至可能没有打开链接。我已经用明确的说明更新了答案。阿尔丽特,我明白了。谢谢,但我需要更新的不仅仅是密钥,特别是当用户的某个特定列为null时。问题是,我已经有了一个包含一些用户详细信息的数据库,但是一些字段以前没有更新过。现在,我想在他们返回页面时更新他们的详细信息。那些细节已经存在的人,我只是更新他们的会话密钥;如果没有,则应该检查列是否为null,然后相应地更新。
$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);
    }
}
$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);
}