php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #8831 a script works on 2 servers I use, and doesn't work on a third one
Submitted: 2001-01-21 20:46 UTC Modified: 2001-06-02 22:06 UTC
From: mage at diablo dot hu Assigned:
Status: Closed Package: MySQL related
PHP Version: 4.0.4pl1 OS: Debian Linux
Private report: No CVE-ID: None
 [2001-01-21 20:46 UTC] mage at diablo dot hu
        Dear Support,

One of my project were must go to another server, and I got a trouble
with my functions.

I try to write a short code to explain it.
This script works well on my computer, windows 98 se, php 4.0.3. Also
works on debian a server, php 4.0.3.
There is another debian server (that was php 4.0.3 too), and this script
crashes on it. I tried to reinstall mysql, php (the new 4.0.4pl), apache,
but that did not help. I show a short code:

------
<?php

$base = mysql_connect('localhost','kepes','***'); // I have a password
of course...
mysql_select_db('KEPES');

$rows = mysql_query("SELECT * FROM ARTICLE_STATE ORDER BY
article_state_id",$base);
test();
$rows = mysql_query("SELECT * FROM ARTICLE_STATE ORDER BY
article_state_id",$base);

mysql_close($base);


function query_more($query,$base) {
  $result = array();
  $data = mysql_query($query,$base);
  while ($row = mysql_fetch_array($data)) {
    $result[] = $row;
  }
//  if ($result) {
//    mysql_free_result($data);
//  }
  return $result;
}

function test() {

$base = mysql_connect('localhost','kepes','***');
mysql_select_db('KEPES');

$rows = query_more("SELECT * FROM ARTICLE_STATE ORDER BY
article_state_id",$base);

mysql_close($base);

}

?>
-----

That outputs nothing on my computer, nothing on the first debian server.
That's ok.
But this outputs on the server where I'd use it the below:

"Warning: Supplied argument is not a valid MySQL result resource in
/home/kepes/public_html/test/test5.php4 on line 16
Warning: 1 is not a valid MySQL-Link resource in
/home/kepes/public_html/test/test5.php4 on line 10"

I figured out this is if I use at least 2 mysql connections same time.
Another interest thing, if I comment out the:
---
  while ($row = mysql_fetch_array($data)) {
    $result[] = $row;
  }
---
part of script, this also works on the 2nd server (but I can't use that way of course).

Because my db-scripts are based upon methods like above, I would like to
know what the problem is. I include some php info.

PHP Version 4.0.5-dev
System        Linux ditto 2.2.17 #1 Mon Dec 4 23:29:54 CET 2000 i686 unknown
Build Date   Dec 10 2000
Configure Command './configure' '--with-mysql' '--with-apxs'
Server API Apache
Virtual Directory Support disabled
Configuration File (php.ini) Path /usr/local/lib
ZEND_DEBUG disabled
Thread Safety
disabled

---------
mysql

MySQL Support enabled
Active Persistent Links 0
Active Links 0
Client API version 3.23.22-beta
MYSQL_INCLUDE
MYSQL_LFLAGS
MYSQL_LIBS

Directive            Local Value            Master Value
mysql.allow_persistent  On  On
mysql.max_links  Unlimited  Unlimited
mysql.max_persistent Unlimited Unlimited

-----

Thank You,

        Mage




Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2001-01-24 15:53 UTC] mage at diablo dot hu
Okay, I have found a note about mysql_connect() in the manual:
"In case a second call is made to mysql_connect() with the same arguments, no new link will be established, but instead, the link identifier of the already opened link will be returned."

That can explain what is wrong in my script. However, in older php versions, I could do connect again (and get same identifier, I checked), and close it as many times as I connected. Now I have to upgrade all my older projects?

 [2001-06-02 22:06 UTC] sniper@php.net
Yes, you need to change your scripts as you were
relying to buggy behaviour.

--Jani

 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Fri Apr 26 06:01:32 2024 UTC