|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2003-06-11 09:58 UTC] michael at redboxcode dot com
This problem went away when I changed odbc_Pconnect to just odbc_connect If I read a table then attempt to insert a record to the table the results are reported successful but the record is NOT added. If I insert the record then read the table it works correctly. Changing the pconnect to connect corrected the problem. If you need additional info, please email. I can strip down the scripts to create a sample of the problem. PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Fri Oct 24 11:00:02 2025 UTC |
note: these files, the access database and phpinfo() are zipped at www.redboxcode.com/Michael.zip ************************* page1.php ******************* <?PHP $connect_id = odbc_pconnect("mydata","",0) or die ("Cannot connect to database"); echo "<html>\n"; echo "<head>\n"; echo "<title>Insert record then read table</title>\n"; echo "</head>\n"; echo "<body>\n"; // First insert a record into the database $sql_command = "insert into mytable (name,time_stamp) values ('Michael','".date("F j G:i:s")."');"; $result = odbc_exec( $connect_id, $sql_command ); echo "<br>".$result." = ".$sql_command."<br>"; // Display the table $sql_command = "select * from mytable order by time_stamp;"; $rsDetail = odbc_exec($connect_id, $sql_command); echo "<br>".$rsDetail." = ".$sql_command."<br>"; $more_records = odbc_fetch_row($rsDetail); echo "<table border=1><tr><th>id</th><th>name</th><th>time stamp</th></tr>\n"; while ($more_records) { echo "<tr><td>".odbc_result($rsDetail,'id')."</td>"; echo "<td>".odbc_result($rsDetail,'name')."</td>"; echo "<td>".odbc_result($rsDetail,'time_stamp')."</td></tr>\n"; $more_records = odbc_fetch_row($rsDetail); } echo "</table>\n"; echo "<br><a href='page2.php'>Next try to read table then insert a record</a><br>"; echo "<br><a href='page3.php'>Clear the table</a><br>"; echo "</body>\n"; echo "</html>\n"; ?> ************************* page2.php ******************* <?PHP $connect_id = odbc_pconnect("mydata","",0) or die ("Cannot connect to database"); echo "<html>\n"; echo "<head>\n"; echo "<title>Read table then insert a record</title>\n"; echo "</head>\n"; echo "<body>\n"; // Display the table $sql_command = "select * from mytable order by time_stamp;"; $rsDetail = odbc_exec($connect_id, $sql_command); echo "<br>".$rsDetail." = ".$sql_command."<br>"; $more_records = odbc_fetch_row($rsDetail); echo "<table border=1><tr><th>id</th><th>name</th><th>time stamp</th></tr>\n"; while ($more_records) { echo "<tr><td>".odbc_result($rsDetail,'id')."</td>"; echo "<td>".odbc_result($rsDetail,'name')."</td>"; echo "<td>".odbc_result($rsDetail,'time_stamp')."</td></tr>\n"; $more_records = odbc_fetch_row($rsDetail); } echo "</table>\n"; // Now insert a record into the database $sql_command = "insert into mytable (name,time_stamp) values ('Michael','".date("F j G:i:s")."');"; $result = odbc_exec( $connect_id, $sql_command ); echo "<br>".$result." = ".$sql_command."<br>"; echo "<br><a href='page1.php'>Back to insert a record then display table</a><br>"; echo "<br><a href='page3.php'>Clear the table</a><br>"; echo "</body>\n"; echo "</html>\n"; ?> ************************* page3.php ******************* <?PHP $connect_id = odbc_pconnect("mydata","",0) or die ("Cannot connect to database"); echo "<html>\n"; echo "<head>\n"; echo "<title>Clear the table and start over</title>\n"; echo "</head>\n"; echo "<body>\n"; // Clear mytable database $sql_command = "delete * from mytable;"; $result = odbc_exec( $connect_id, $sql_command ); echo "<br>".$result." = ".$sql_command."<br>"; // Display the table $sql_command = "select * from mytable order by time_stamp;"; $rsDetail = odbc_exec($connect_id, $sql_command); echo "<br>".$rsDetail." = ".$sql_command."<br>"; $more_records = odbc_fetch_row($rsDetail); echo "<table border=1><tr><th>id</th><th>name</th><th>time stamp</th></tr>\n"; while ($more_records) { echo "<tr><td>".odbc_result($rsDetail,'id')."</td>"; echo "<td>".odbc_result($rsDetail,'name')."</td>"; echo "<td>".odbc_result($rsDetail,'time_stamp')."</td></tr>\n"; $more_records = odbc_fetch_row($rsDetail); } echo "</table>\n"; echo "<br><a href='page1.php'>Insert a record then display the table</a><br>"; echo "<br><a href='page2.php'>Display the table then insert a record</a><br>"; echo "</body>\n"; echo "</html>\n"; ?>please note: I noticed that I am actually on version 4.3.1 Windows NT localhost 4.0 build 1381 inserting a record then reading the database works in this code <?PHP $connect_id = odbc_pconnect("mydata","",0) or die ("Cannot connect to database"); // First insert a record into the database $sql_command = "insert into mytable (name,time_stamp) values ('Michael','".date("F j G:i:s")."');"; $result = odbc_exec( $connect_id, $sql_command ); echo $result." = ".$sql_command."\n"; // this will work correctly ?> reading the database and THEN inserting the records does NOT work in this code. <?PHP $connect_id = odbc_pconnect("mydata","",0) or die ("Cannot connect to database"); // first read the table $sql_command = "select * from mytable order by time_stamp;"; $rsDetail = odbc_exec($connect_id, $sql_command); // Now insert a record into the database $sql_command = "insert into mytable (name,time_stamp) values ('Michael','".date("F j G:i:s")."');"; $result = odbc_exec( $connect_id, $sql_command ); // The command returns a valid results, but the record is NOT in the database ?>My platform: PHP4.3.9, Win2003, .mdb file It seems that INSERT and DELETE are cached, they never get executed if they are the last sql commands of your script. Adding a "SELECT" at the end (as in the following sample), make them works. <?php $dsn = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=C:\Inetpub\wwwroot\pxfm\db\pxfmw.mdb;DefaultDir=C:\Inetpub\wwwroot\pxfm\db"; $con = odbc_pconnect($dsn,"","") or die("Connection error<BR>\n".odbc_errormsg()); $r = odbc_exec($con,"select * from testtab") or die("error: ".odbc_errormsg()); while( odbc_fetch_row($r) ) { print "ID=".odbc_result($r,"id")."<BR>\n"; print "NAME=".htmlspecialchars(odbc_result($r,"name"))."<BR>\n"; print "<P>\n"; } // This is just silently ignored !! odbc_exec($con,"INSERT INTO testtab (id,name) values(12,'john')") or die("exec error!"); // If you uncomment the following line, the INSERT is executed, but not the DELETE // odbc_exec($con,"DELETE FROM testtab") or die("delete error"); // The following line makes it works, despite id=99999 does not exists // odbc_exec($con,"SELECT * from testtab where id=99999"); ?>