php mysql多重查询不返回结果
我正在尝试执行以下操作php mysql多重查询不返回结果,php,mysql,sql,Php,Mysql,Sql,我正在尝试执行以下操作 public function result_multi($sql) { try { mysqli_multi_query($this->db_connection,$sql); $result=mysqli_store_result($this->db_connection); $row=mysqli_fetch_row($result); } $b=new DB; $sql="INSERT
public function result_multi($sql) {
try {
mysqli_multi_query($this->db_connection,$sql);
$result=mysqli_store_result($this->db_connection);
$row=mysqli_fetch_row($result);
}
$b=new DB;
$sql="INSERT INTO payout (mid, type, datetime) VALUES ('0','BC',
NOW());SELECT LAST_INSERT_ID();";
$b->result_multi($sql);
$row返回NULL和$result return FALSE,但是当我在phpmyadmin中执行SQL查询时,它可以工作。在获取多个查询的结果时,声明: 要从第一个查询检索结果集,可以使用
mysqli\u use\u result()
或mysqli\u store\u result()
。所有后续查询结果都可以使用mysqli\u more\u results()
和mysqli\u next\u result()
进行处理
因此,您需要调用mysqli\u next\u result
一次来访问第二次查询的结果,然后mysqli\u store\u result/mysqli\u fetch\u row
来获取id
但在您的用例中,似乎更简单的方法是使用mysqli\u insert\u id
方法,如:
my $conn = $this->db_connection;
$sql = "INSERT INTO payout (mid, type, datetime) VALUES ('0','BC', NOW())";
if (mysqli_query($conn, $sql)) {
$last_id = mysqli_insert_id($conn);
echo "Record inserted with ID " . $last_id;
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
my$conn=$this->db\u连接;
$sql=“插入到支出(mid、type、datetime)值('0','BC',NOW())”;
if(mysqli_查询($conn,$sql)){
$last\u id=mysqli\u insert\u id($conn);
回显“插入ID的记录”。$last\u ID;
}否则{
echo“Error:”.$sql.
“.mysqli_Error($conn);
}
PS:在打开与数据库的连接后,您还应该检查错误。我需要更多的代码,因为您使用了多重sql,所以必须有更多的查询 如果只有一个查询sql,请尝试此代码:
public function result($sql) {
try {
mysqli_query($this->db_connection,$sql);
$result=mysqli_store_result($this->db_connection);
$row=mysqli_fetch_row($result);
}
$b=new DB;
$sql="INSERT INTO payout (mid, type, datetime) VALUES ('0','BC',
NOW());SELECT LAST_INSERT_ID();";
$b->result($sql);
这是可行的,但为什么sql选项不起作用。@the_big_blackbox:我用解释更新了我的答案感谢这两种解决方案现在都起作用了这两种方法有什么优点/缺点吗?我建议使用
mysqli_insert_id
,因为它是专门为这个用例设计的mysqli\u multi\u query
更适合于需要执行随机多SQL的情况。您的代码看起来无效。我不认为在没有catch和/或finally块的情况下可以使用try块(重点是什么?)这里有一篇全面的帖子:但老实说,为什么不使用INSERT然后使用php获取最后一个id呢?你改变了什么?为什么代码仍然包含语法错误?错误在哪里?你能证明一下吗?那么,这个函数result
包含在哪里呢?可能在该函数中初始化的DB类中?$b->result($sql);这就是db,我们无法测试,因为看不到真正的代码。您的解决方案在哪里?我给出了删除多重查询的解决方案…你在评论中是垃圾邮件吗?