php - INSERT INTO - 子查询返回超过 1 行 (PHP/MySQL)
问题描述
我正在尝试使用 PHP 和 MySQL 开发一个网站。这是我尝试过的PHP代码:
$sql = sprintf("INSERT INTO request_boms SET
request_list_id = %d,
project_version_id = %d,
amount = %d,
user = '%s',
timestamp = %d",
$requestNo, $bomID, $amount, $_SESSION["admin_user_name"], time());
$this->db_inventory->Execute($sql);
我的$this->db_inventory
变量与 DB API 连接。没有问题。但是当我在这里执行代码时,会返回这个:
Subquery returns more than 1 row
INSERT INTO request_boms SET request_list_id = 14, project_version_id = 429, amount = 1, user = 'admin', timestamp = 1607510083
我在这里(stackoverflow)上搜索了这个问题,但在所有问题中都有SELECT
他们的查询中的声明。我没有在我的查询中给出任何SELECT
声明。INSERT INTO
怎么可能?
编辑(由于评论)
这是我的Execute()
public function Execute($sql) {
$rs = new RecordSet($sql, $this->db_type, $this->conn);
return $rs;
}
和RecordSet
class RecordSet {
public $rs;
public $db_type;
public $conn;
public function RecordSet($sql, $db_type, $conn) {
$this->db_type = $db_type;
$this->conn = $conn;
if ($this->db_type == 'sybase') {
$rsx =@sybase_query($this->sql_escape($sql));
if (!$rsx) {
$this->queryError(sybase_get_last_message(),$sql);
}
} elseif ($this->db_type == 'mssql') {
$rsx =@mssql_query($this->sql_escape($sql));
if (!$rsx) {
$this->queryError(mssql_get_last_message(),$sql);
}
} elseif ($this->db_type == 'odbc') {
$rsx =@odbc_exec($this->conn, $this->sql_escape($sql));
if (!$rsx) {
$this->queryError(odbc_errormsg(),$sql);
}
} else {
$rsx = mysqli_query($this->conn, $this->sql_escape($sql));
if (!$rsx) {
$this->queryError(@mysqli_error($this->conn),$sql);
}
}
$this->rs = $rsx;
}
}
解决方案
解决了!
在我的数据库中,我还有一个名为request_components
. 它有 2 个主键:id
和request_list_id
. 从表中删除request_list_id
键后,问题解决了。似乎在表之间产生冲突。如果你有这个问题,你应该检查你的数据库。
推荐阅读
- wcf - 未在发布模式下的服务引用调用上设置 UWP 对象引用
- isabelle - 有没有办法简化 Isabelle 证明中的假设?
- mysql - MySQL:为 ETL 高效存储大量数据
- express - axios-cache-adapter vs redis 用于缓存 api 响应
- javascript - 如何使用 jquery off 处理程序为多个项目重置计时器?
- javascript - 在 React 打字稿中,innerHTML 为空
- java - 我什么时候知道什么时候使用“scan.close();”
- c++ - 我的 MergeSort 实现有什么问题
- laravel - 使用 firebase 配置从 Laravel 控制器发送 OTP
- batch-file - 批处理 >> 运算符是否根据输入生成文件编码?