0

一些代码从选择数据开始,然后检查要插入的行号是否为 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

}

到目前为止,我如何解决它是通过重复使用语句下方的$selectand代码$rowinsert

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);
   [..]

我想要一个更简单的方法来做到这一点

4

1 回答 1

1

如果您知道新创建的记录中有什么,您可以创建一个新数组 $row=array('username'->'bob', ...);

但是,如果您在表中有默认值,或者稍后添加其他内容,您将不得不进行第二次选择。

$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 因为这是您运行查询的结果。

于 2012-07-10T15:56:50.363 回答