PHP `mysqli_multi_query` cannot return a value

106 Views Asked by At

A simple example

$connection = mysqli_connect("domain", "user", "psw", "db");
$response = mysqli_multi_query($connection, "
    SET @a = 'foo';
    SET @b = 'bar';
    SELECT @a AS A, @b AS B
");

var_dump(mysqli_field_count(connection));
var_dump(mysqli_use_result($connection));
var_dump(mysqli_store_result($connection));
var_dump(mysqli_more_results($connection));
var_dump(mysqli_next_result($connection));

Returns (prettyfied)

int(0)
bool(false)
bool(false)
bool(true)
bool(true)

What's wrong? Am I just misunderstanding how to get values from mysqli_multi_query? Why does it return 0 in mysqli_field_count? If there is a syntax error, how can I get its number or description?

Thanks in advance!

1

There are 1 best solutions below

0
On BEST ANSWER

Don't use mysqli_multi_query(). Each query should be sent separately to the server.

Do it like this:

$response1 = mysqli_query($connection, "SET @a = 'foo'");
$response2 = mysqli_query($connection, "SET @b = 'bar'");
$response3 = mysqli_query($connection, "SELECT @a AS A, @b AS B");
$row = mysqli_fetch_assoc($response3);