有些代码从选择数据开始,然后检查要插入的行号是否为0,然后继续正常过程。问题是,正常进程依赖于不存在的select
语句,因为它存储在insert
之前。如果没有ajax或任何与html相关的东西,我如何在PHP中刷新数据请求?这里有一个例子可以解释:
$user = $_GET['user']; // not stored user
$select = mysql_query("SELECT * FROM `table` WHERE username = ".$user);
$row = mysql_fetch_array($select);
$rownum = mysql_num_rows($select);
if(!$rownum){
mysql_query("INSERT INTO table (username, something) VALUES ('$user', 1)");
}
/* Here comes the problem */
if($row['something'] == 0){
die("Not found !"); // THIS if returns true since it was not found at first place before inserting
// i want it to refresh the $select data so it could be read as 1
}
到目前为止,我是如何通过重复使用insert
语句下面的$select
和$row
代码来解决它的
if(!$rownum){
mysql_query("INSERT INTO table (username, something) VALUES ('$user', 1)");
}
$select = mysql_query("SELECT * FROM `table` WHERE username = ".$user);
$row = mysql_fetch_array($select);
[..]
我想要一种更简单的方法来完成
如果你知道新创建的记录中有什么,你可以创建一个新数组$row=array('username'->'ob',…);
但是,如果表中有默认值,或者稍后添加其他内容,则必须进行第二次选择。
$user=urldecode($_GET['user']);
$result=mysql_query("SELECT * FROM `table` WHERE username='".mysql_real_escape_string($user)."'");
if(!$result) die("SQL ERROR");
if(mysql_num_rows($result)>0)
{
$row = mysql_fetch_array($select);
}
else
{
mysql_query("INSERT INTO table (username, something) VALUES ('".mysql_real_escape_string($user)."', 1)");
$result=mysql_query("SELECT * FROM `table` WHERE username='".mysql_real_escape_string($user)."'");
if(!$result) die("SQL ERROR");
if(mysql_num_rows($result)==0) die("MAJOR ERRORS IN SQL");
$row = mysql_fetch_array($result);
}
我更喜欢使用$result,因为这是您运行查询的结果。