php mysql multiquery不返回结果

时间:2019-01-17 14:07:11

标签: 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 INTO payout (mid, type, datetime) VALUES ('0','BC', 
NOW());SELECT LAST_INSERT_ID();";
$b->result_multi($sql);

$ row返回NULL,而$ result返回FALSE,但是当我在phpmyadmin中执行SQL查询时,它会起作用。

2 个答案:

答案 0 :(得分: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:打开与数据库的连接后,您还应该检查错误。

答案 1 :(得分:-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);