php mysql multiquery不返回结果[重复]

问题描述 投票:0回答:2

这个问题在这里已有答案:

我正在尝试执行以下操作。

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返回FALSE,但是当我在phpmyadmin中执行SQL查询时,它可以工作。

php mysql sql
2个回答
3
投票

在获取多个查询的结果时,the mysqli_multi_query documentation说:

要从第一个查询中检索结果集,可以使用mysqli_use_result()mysqli_store_result()。可以使用mysqli_more_results()mysqli_next_result()处理所有后续查询结果。

所以你需要调用mysqli_next_result一次来访问第二个查询的结果,然后mysqli_store_result/mysqli_fetch_row来获取id。

但在您的用例中,似乎更简单的方法是使用mysqli_insert_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);
}

PS:您还应该在打开与数据库的连接后检查错误。


-2
投票

我需要更多代码,因为你使用了多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);
© www.soinside.com 2019 - 2024. All rights reserved.