我正在尝试执行以下操作。
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查询时,它会起作用。
答案 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);