ID: 16277 Comment by: nicked at gmail dot com Reported By: rbanks at arel dot com dot au Status: No Feedback Bug Type: MSSQL related Operating System: NT4 PHP Version: 4.1.2 New Comment:
(I know this is an old bug, but the latest version has the same problem) PHP/5.1.0RC1 MSSQL 7.0 Apache/2.0.54 (Win32) I want to do several hundred database INSERTs, and it's much faster to combine them into a single "compound" statement separated by semicolons. If the records already exist in the database, I get a duplicate key message and the statement fails. Normally this is fine, I just go on to the next INSERT. But now that I use this compound statement, when that fails, every subsequent (unrelated) query also fails. The only way I can continue is by closing the database connection and opening it again. A related problem is that now the duplicate key warnings are printed even if you call mssql_query with the '@' operator. They seem to be output when the connection is closed, because if you call @mssql_close manually they don't appear. Another option is to use mssql_min_message_severity(15). -Nick Previous Comments: ------------------------------------------------------------------------ [2002-12-23 01:00:02] php-bugs at lists dot php dot net No feedback was provided for this bug for over 2 weeks, so it is being suspended automatically. If you are able to provide the information that was originally requested, please do so and change the status of the bug back to "Open". ------------------------------------------------------------------------ [2002-12-07 01:52:50] [EMAIL PROTECTED] Please try using this CVS snapshot: http://snaps.php.net/php4-latest.tar.gz For Windows: http://snaps.php.net/win32/php4-win32-latest.zip ------------------------------------------------------------------------ [2002-03-26 08:45:52] [EMAIL PROTECTED] RTFBR ;) it is MS SQL, not mySQL ------------------------------------------------------------------------ [2002-03-26 08:01:58] [EMAIL PROTECTED] RTM! You can only run one query per call to mysql_query()! ------------------------------------------------------------------------ [2002-03-25 22:49:13] rbanks at arel dot com dot au I am creating tables and indexes in a few places. To make life a little easier I want to create a table and it's indexes in one go. The following code fails: ---- $queries[0]["query_string"]="CREATE TABLE objects ( [id] integer IDENTITY (1,1) PRIMARY KEY, [type] varchar(16) DEFAULT '' NOT NULL, [object] text, [vtype] varchar(16) DEFAULT '' NOT NULL, [lastchanged] TIMESTAMP); CREATE INDEX objects_lastchanged ON objects (lastchanged);"; $queries[1]["query_string"]="CREATE TABLE nodes ( path varchar(127) DEFAULT '' NOT NULL PRIMARY KEY, parent varchar(127) DEFAULT '' NOT NULL, object numeric(11) DEFAULT '0' NOT NULL, priority numeric(11) DEFAULT '0' NOT NULL );"; while ((list($key, $query)=each($queries)) && (!$error)) { echo $query["query_string"]; $exec=mssql_query($query["query_string"]); } ---- But if I separate out the create index into a separate query it works fine. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=16277&edit=1