php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #13922 FORMAT() output in MySQL can't use str_replace
Submitted: 2001-11-04 16:13 UTC Modified: 2001-11-04 16:19 UTC
From: ron at imperators dot ca Assigned:
Status: Not a bug Package: MySQL related
PHP Version: 4.0.5 OS: Redhat 7.1
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: ron at imperators dot ca
New email:
PHP Version: OS:

 

 [2001-11-04 16:13 UTC] ron at imperators dot ca
TO reproduce the problem:

Run a mysql query with the following:

   SELECT FORMAT((1004763843/1800),0) as TimeIndex

This will yeild 558,202. (Including the comma). 

As output from the sample script shows (see below for script):

   Before str_replace = 558,202

This needs to be converted to type int, but doing a settype to integer will return only 558. So any resourceful (pronounced "lazy") php programmer would suggest using str_replace to remove the comma. This does not work: 

   After str_replace = 558,202

So doing the settype still yeilds this: 

   After settype = 558

Is there a way to have settype deal with commas (depending on the locale of course)? Of course the real solution is to use the MYSQL FLOOR, CEILING and ROUND functions, which I have done, but it was still perplexing as to why str_replace wouldn't work correctly on this string. The database library used here is phpDB. 

Script:
$query = "SELECT FORMAT((1004763843/1800),0) as TimeIndex";

echo $query."<br>\n";

            $rs = $db->execute($query);

            $TimeIndex = $rs->fields["TimeIndex"];
            echo "Before str_replace = $TimeIndex <BR>\n";
            str_replace(",","",$TimeIndex);
            echo "After str_replace = $TimeIndex <BR>\n";
            settype($TimeIndex,"integer");
            echo "After settype = $TimeIndex <BR>\n";


Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2001-11-04 16:15 UTC] jimw@php.net
$TimeIndex = str_replace(",","",$TimeIndex);

str_replace doesn't modify the string you give it.


 [2001-11-04 16:19 UTC] ron at imperators dot ca
Oops. Not enough coffee. ;) 
 
PHP Copyright © 2001-2025 The PHP Group
All rights reserved.
Last updated: Wed Feb 05 20:01:30 2025 UTC