Man, I need some help coz I seriously don't get this ...
OK, the following statements make it easy for you to try the problem for yourself:
Use these statements to build and populate the table:
Code: Select all
CREATE TABLE test (nom nvarchar(20), val nvarchar(20));
DELETE test;
INSERT test VALUES ('bob', 'delete_me_1');
INSERT test VALUES ('bob', 'delete_me_2');
INSERT test VALUES ('bob', 'delete_me_3');
INSERT test VALUES ('bob', 'delete_me_4');
INSERT test VALUES ('bob', 'delete_me_5');
INSERT test VALUES ('bob', 'delete_me_6');
INSERT test VALUES ('bob', 'delete_me_7');
INSERT test VALUES ('bob', 'delete_me_8');
INSERT test VALUES ('bob', 'delete_me_9');Code: Select all
//$sqlresultid = odbc_exec($my_resource_ODBCconnectionID, "SELECT * FROM test");
$sqlresultid = odbc_exec($my_resource_ODBCconnectionID, "SELECT * FROM test ORDER BY val");
$i = 1;
while (odbc_fetch_into($sqlresultid, $i++, $row)) {
if (odbc_exec($my_resource_ODBCconnectionID, "DELETE test WHERE nom = '$rowї0]' AND val = '$rowї1]'")) {
print "deleted row nom:$rowї0] val:$rowї1].<br />";
}
}deleted row nom:bob val:delete_me_1
deleted row nom:bob val:delete_me_2
deleted row nom:bob val:delete_me_3
deleted row nom:bob val:delete_me_4
deleted row nom:bob val:delete_me_5
deleted row nom:bob val:delete_me_6
deleted row nom:bob val:delete_me_7
deleted row nom:bob val:delete_me_8
deleted row nom:bob val:delete_me_9
which seems fine .. woohoo !
Then run the same code but comment out the second line and use the first instead (WITHOUT the ORDER BY clause). I dunno about you but I got this !!
deleted row nom:bob val:delete_me_1
deleted row nom:bob val:delete_me_3
deleted row nom:bob val:delete_me_5
deleted row nom:bob val:delete_me_7
deleted row nom:bob val:delete_me_9
What the #%^@#%^@# !?!?!
Is the ODBC result identifier returned by odbc_exec() not fully separated from the table it runs on ??
I am running 4.0.6 on a windows machine with MSSQLServer 2000.
Dying to find out why this is ... bit worried it is part of a larger problem.
Thanks.