Mar*_*cny 3 php mysql select sql-delete
我有一个PHP服务器脚本,它从MySQL数据库中选择一些数据.
只要我有mysql_query中保存在我自己的局部变量mysql_fetch_assoc的结果,我想删除我只是选择的行.
这种方法的问题在于,似乎PHP已经对我的局部变量进行了传递而不是传值,并且我的局部变量在delete命令之后变得不确定.
反正有没有绕过这个?这是我的代码:
$query="SELECT id, peerID, name FROM names WHERE peer = $userID AND docID = '$docID' AND seqNo = $nid";
$result = mysql_query($query);
if (!$result)
self::logError("FAIL:1 getUsersNamesUpdate() query: ".$query."\n");
if (mysql_num_rows($result) == 0)
return array();
$row = mysql_fetch_assoc($result);
$result = array();
$result["id"] = $row["id"];
$result["peerID"] = $row["peerID"];
$result["name"] = $row["name"];
$query="DELETE FROM names WHERE id = $result[id];";
$result = mysql_query($query);
if (!$result)
self::logError("FAIL:2 getUsersNamesUpdate() query: ".$query."\n");
return $result;
Run Code Online (Sandbox Code Playgroud)
您$result使用第二个语句覆盖变量:
$query="DELETE FROM names WHERE id = $result[id];";
$result = mysql_query($query); // result does not contain the array anymore
Run Code Online (Sandbox Code Playgroud)
将名称更改为其他名称.它与引用调用等无关.
实际上,您的第一次赋值是不必要的,因为$row它已经是一个数组:
$row = mysql_fetch_assoc($result);
$result = array();
$result["id"] = $row["id"];
$result["peerID"] = $row["peerID"];
$result["name"] = $row["name"];
Run Code Online (Sandbox Code Playgroud)
你可以这样做:
$row = mysql_fetch_assoc($result);
// at the end
return $row;
Run Code Online (Sandbox Code Playgroud)
然后,您甚至不必更改第二个语句的变量名称.但考虑使用有意义的变量名称.