Don't die horribly from sql.php when making INSERT/DELETE/UPDATE/CREATE TABLE/etc calls that return 'true' instead of a result object.
Code was attempting to handle this case by asking the result object for its db so we can ask for the affected row count -- obviously that doesn't do so good when the result is not an object. Changed Database::sourceStream() to send itself as the second parameter to the result-handling callback, so the callback knows which DB to check.
This commit is contained in:
parent
f2422f373e
commit
dff6e3ae0b
2 changed files with 4 additions and 4 deletions
|
|
@ -2177,7 +2177,7 @@ class Database {
|
|||
$cmd = $this->replaceVars( $cmd );
|
||||
$res = $this->query( $cmd, __METHOD__ );
|
||||
if ( $resultCallback ) {
|
||||
call_user_func( $resultCallback, $res );
|
||||
call_user_func( $resultCallback, $res, $this );
|
||||
}
|
||||
|
||||
if ( false === $res ) {
|
||||
|
|
|
|||
|
|
@ -53,15 +53,15 @@ class SqlPromptPrinter {
|
|||
}
|
||||
}
|
||||
|
||||
function sqlPrintResult( $res ) {
|
||||
function sqlPrintResult( $res, $db ) {
|
||||
if ( !$res ) {
|
||||
// Do nothing
|
||||
} elseif ( $res->numRows() ) {
|
||||
} elseif ( is_object( $res ) && $res->numRows() ) {
|
||||
while ( $row = $res->fetchObject() ) {
|
||||
print_r( $row );
|
||||
}
|
||||
} else {
|
||||
$affected = $res->db->affectedRows();
|
||||
$affected = $db->affectedRows();
|
||||
echo "Query OK, $affected row(s) affected\n";
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue