From: Wez Furlong Date: Sat, 29 Oct 2005 02:36:30 +0000 (+0000) Subject: Close PECL Bug #5780 X-Git-Tag: RELEASE_1_0RC2~34 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e0924b74510dc66f10093898697abdd7b4b7522d;p=php Close PECL Bug #5780 --- diff --git a/ext/pdo_mysql/mysql_driver.c b/ext/pdo_mysql/mysql_driver.c index a72ac5c789..0b5570e39c 100755 --- a/ext/pdo_mysql/mysql_driver.c +++ b/ext/pdo_mysql/mysql_driver.c @@ -58,7 +58,16 @@ int _pdo_mysql_error(pdo_dbh_t *dbh, pdo_stmt_t *stmt, const char *file, int lin einfo = &H->einfo; } - einfo->errcode = mysql_errno(H->server); +#if HAVE_MYSQL_STMT_PREPARE + if (S && S->stmt) { + einfo->errcode = mysql_stmt_errno(S->stmt); + } + else +#endif + { + einfo->errcode = mysql_errno(H->server); + } + einfo->file = file; einfo->line = line; diff --git a/ext/pdo_mysql/tests/pecl_bug_5780.phpt b/ext/pdo_mysql/tests/pecl_bug_5780.phpt new file mode 100644 index 0000000000..643597c016 --- /dev/null +++ b/ext/pdo_mysql/tests/pecl_bug_5780.phpt @@ -0,0 +1,41 @@ +--TEST-- +PDO MySQL PECL Bug #5780 +--SKIPIF-- + +--FILE-- +exec("CREATE TABLE test (login varchar(32) NOT NULL, data varchar(64) NOT NULL)"); +$db->exec("CREATE TABLE test2 (login varchar(32) NOT NULL, password varchar(64) NOT NULL)"); +$db->exec("INSERT INTO test2 (login, password) VALUES ('testing', 'testing')"); +$db->exec("INSERT INTO test2 (login, password) VALUES ('test2', 'testpw2')"); + +$logstmt = $db->prepare('INSERT INTO test (login, data) VALUES (:var1, :var2)'); +$authstmt = $db->prepare('SELECT * FROM test2 WHERE login = :varlog AND password = :varpass'); +$authstmt->execute(array(':varlog' => 'testing', ':varpass' => 'testing')); +var_dump($authstmt->fetch(PDO::FETCH_NUM)); +@var_dump($logstmt->execute(array(':var1' => 'test1', ':var2' => 'test2'))); +$info = $logstmt->errorInfo(); +unset($info[2]); +var_dump($info); +--EXPECT-- +array(2) { + [0]=> + string(7) "testing" + [1]=> + string(7) "testing" +} +bool(false) +array(2) { + [0]=> + string(5) "HY000" + [1]=> + int(2014) +}