gpt4 book ai didi

选择后立即删除 PHP

转载 作者:可可西里 更新时间:2023-11-01 07:50:36 26 4
gpt4 key购买 nike

我有一个 PHP 服务器脚本,可以从 MySQL 数据库中选择一些数据。

一旦我将 mysql_query 和 mysql_fetch_assoc 的结果存储在我自己的局部变量中,我想删除我刚刚选择的行。

这种方法的问题在于,PHP 似乎对我的局部变量进行了按引用传递而不是按值传递,并且我的局部变量在删除命令后变为未定义。

有没有办法解决这个问题?这是我的代码:

    $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;

最佳答案

您正在用第二条语句覆盖您的 $result 变量:

$query="DELETE FROM names WHERE id = $result[id];";
$result = mysql_query($query); // result does not contain the array anymore

将名称更改为其他名称。它与按引用调用等无关。


实际上,您第一次赋值是不必要的,因为 $row 已经是一个数组:

$row = mysql_fetch_assoc($result);
$result = array();
$result["id"] = $row["id"];
$result["peerID"] = $row["peerID"];
$result["name"] = $row["name"];

你可以这样做:

$row = mysql_fetch_assoc($result);
// at the end
return $row;

那么您甚至不必为第二条语句更改变量名。但请考虑使用有意义的变量名。

关于选择后立即删除 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2706309/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com