这个问题在这里已有答案:
我正在尝试执行以下操作。
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查询时,它可以工作。
在获取多个查询的结果时,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:您还应该在打开与数据库的连接后检查错误。
我需要更多代码,因为你使用了多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);