Hướng dẫn multi query pdo php
As of PHP version 5.3 Though, I can't figure out how to get both result sets if more than one
Returns:
hakre 187k48 gold badges419 silver badges802 bronze badges asked Jun 30, 2012 at 5:06
2 It turns out that you need to use
This will return result for the second query. It is a bit odd implementation. It would certainly be easier if multi-query statement would just return both results sets under one array. However, the advantage is that this implementation allows to fetch every query using different FETCH styles. answered Jun 30, 2012 at 5:27
GajusGajus 64.5k68 gold badges262 silver badges417 bronze badges MySQL optionally allows having multiple statements in one statement string, but it requires special handling. Multiple statements or multi queries must be executed with mysqli::multi_query(). The individual statements of the statement string are separated by semicolon. Then, all result sets returned by the executed statements must be fetched. The MySQL server allows having statements that do return result sets and statements that do not return result sets in one multiple statement. Example #1 Multiple Statements
(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); The above example will output: array(1) { [0]=> array(1) { ["_num"]=> string(1) "0" } } array(1) { [0]=> array(1) { ["_num"]=> string(1) "1" } } Security considerations The API functions
mysqli::query() and mysqli::real_query() do not set a connection flag necessary for activating multi queries in the server. An extra API call is used for multiple statements to reduce the damage of accidental SQL injection attacks. An attacker may try to add statements such as Example #2 SQL Injection
The above example will output: Error executing query: (1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DROP TABLE mysql.user' at line 1 Prepared statements Use of the multiple statement with prepared statements is not supported. See also
velthuijsen ¶ 4 years ago
$mysqli->query("DROP TABLE IF EXISTS test") || !$mysqli->query("CREATE TABLE test(id INT)")) { |