ID:               16295
 Updated by:       [EMAIL PROTECTED]
 Reported By:      [EMAIL PROTECTED]
-Status:           Open
+Status:           Bogus
 Bug Type:         MySQL related
 Operating System: MDK 8.2
 PHP Version:      4.1.2
 New Comment:

This is not a bug. You should open two separate connections
to the database and use the link identifier in mysql_query().

Also, this is not very efficient. It would be better to
first fetch the whole array containing the id's and then
make a comma separated list of them and use 'IN()' function
in the query.

ie. "DELETE FROM tbl2 WHERE id IN($list_of_ids)"



Previous Comments:
------------------------------------------------------------------------

[2002-03-27 10:53:28] [EMAIL PROTECTED]

I more specify my problem:

There are two identical blocks like this


1| $sql=mysql_query("SELECT id FROM tbl");
2| while($row = mysql_fetch_array($sql, MYSQL_ASSOC)) {
3|    mysql_query("DELETE FROM tbl2 WHERE 
4|    id=".$row["id"]);
5| }

8| $sql=mysql_query("SELECT id FROM tbl");
9| while($row = mysql_fetch_array($sql, MYSQL_ASSOC)) {
10|    mysql_query("DELETE FROM tbl2 WHERE 
11|   id=".$row["id"]);
12| }


fetching array on line 8 writes "# is not a valid mysql result
resource"

But when I put whatever query between these blocks, invalid resource
from the second block disappears and the query works good as well.

It looks like I can't use DELETE query when selecting


So, this is ok:

1| $sql=mysql_query("SELECT id FROM tbl");
2| while($row = mysql_fetch_array($sql, MYSQL_ASSOC)) {
3|    mysql_query("DELETE FROM tbl2 WHERE 
4|    id=".$row["id"]);
5| }

6| $sql=mysql_query("SELECT id FROM tbl"); //this does nothing but
prevent error from next block
7| $row = mysql_fetch_array($sql, MYSQL_ASSOC);

8| $sql=mysql_query("SELECT id FROM tbl");
8| while($row = mysql_fetch_array($sql, MYSQL_ASSOC)) {
9|    mysql_unbuffered_query("DELETE FROM tbl2 WHERE 
10|   id=".$row["id"]);
11| }

------------------------------------------------------------------------

[2002-03-27 10:53:08] [EMAIL PROTECTED]

I don't think this is a PHP problem.  Try this:
Modify your script so that it looks like:
1| $sql=mysql_query("SELECT id FROM tbl");
2| while($row = mysql_fetch_array($sql, MYSQL_ASSOC)) {
3|    mysql_unbuffered_query("DELETE FROM tbl2 WHERE 
4|    id=\"".$row["id"]."\"");
5| }

If this works, change this bug to bogus.


------------------------------------------------------------------------

[2002-03-27 09:30:40] [EMAIL PROTECTED]

I try to put mysql_query everywhere (there are no
mysql_unbuffered_queryies)

Still the same.

What's important? mysql_errno is always null and the error occures in
various resources.

Result of faulty operation in a database is sometimes ok and sometimes
not.

------------------------------------------------------------------------

[2002-03-27 06:16:04] [EMAIL PROTECTED]

Don't mix mysql_unbuffered_query and mysql_query.
mysql_unbuffered_query is for fetching rows in SELECT, 
SHOW or DESCRIBE statements without buffering it.

Use mysql_query ("DELETE ... instead.


------------------------------------------------------------------------

[2002-03-27 06:15:58] [EMAIL PROTECTED]

Don't use mysql_unbuffered_query and mysql_query mixed.
mysql_unbuffered_query is for fetching rows in SELECT, 
SHOW or DESCRIBE statements without buffering it.

Use mysql_query ("DELETE ... instead.


------------------------------------------------------------------------

The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
    http://bugs.php.net/16295

-- 
Edit this bug report at http://bugs.php.net/?id=16295&edit=1

Reply via email to