如何检查列的值是否为空,然后才执行查询?例如:
col1 col2 col3
01 abc
我运行一个查询,首先检查记录是否存在;如果它存在,它应该执行更新查询,如果它不存在,它将执行插入查询。 如何检查col3是否为空,如果为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);
}
答案 0 :(得分:1)
http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
没有真正检查列的值,但我认为你实际上并不需要它。
您需要将uid
作为UNIQUE
列。您尝试为具有给定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')
一个查询,而不是三个。你不已经在做了。
答案 1 :(得分: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);
}
答案 2 :(得分:-1)
这是你的意思吗?
这可以像这样(未经测试)实现:
$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);
}
}