MySQL insert not working in PHP Code ?!

Gah!  I can't for the life of me figure out why this isn't working.  From within a while statement, I'm trying to insert records into a db.  

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {

  $ins = "INSERT INTO temp (product_id, quantity, sessionid, price, shipping, description) VALUES ('".$row['product_id']."', '".$_SESSION['cart'][$row['product_id']]."', '".$sessnum."', '".$row['product_price']."', '".$row['shipping_cost']."', '".$row['product_desc']."')";

  $res = mysql_query($ins);


If I echo $ins, I get a good query:

INSERT INTO temp (product_id, quantity, sessionid, price, shipping, description) VALUES ('1345', '1', 'gt4qe3cv1vpkz9akt9trnnlat7', '129', '9', 'TSHIRT - Blue/Green - SMALL')

In fact, if I copy and paste this query at the mysql prompt, it works fine.  But it doesn't work when the script runs.  Nothing is inserted into my table.  I did:

if($res) {
  echo 'fine';

And it printed 'fine' to the screen. I don't understand what's happening.  I checked all of the syntax, etc., but it's not working.  Help!

Who is Participating?
glcumminsConnect With a Mentor Commented:
See if you can find out what the MySQL error is:

  $res = mysql_query($ins) or die("Failed while executing the following query: $ins<br />The MySQL error was: " . mysql_error());
Guy Hengel [angelIII / a3]Billing EngineerCommented:
let me assume that some fields, like product_id, quantity, price etc are numerical fields, in which case you should NOT use the single quotes around the value...
n00b0101Author Commented:
No, even if I remove them, the information isn't inserted
Upgrade your Question Security!

Your question, your audience. Choose who sees your identity—and your question—with question security.

Guy Hengel [angelIII / a3]Billing EngineerCommented:
please check if you don't get any error printed...
if($res) {
  print mysql_error();
  echo 'fine';
Guy Hengel [angelIII / a3]Billing EngineerCommented:
if that still doesn't give any error, then you are not looking at the same database...
Chris GralikeSpecialistCommented:
Thats prop because the sql connection is allready being used for the resultset from wich you are getting the result set. An method of doing this (if you are using a class) is to setup a second connection to your database.

Not sure how the MYSQL_ASSOC is handled, but try to set up a second connection and use that to do the insert.

if using classes;

$sql['1'] = new c_mysql;
$sql['2'] = new c_mysql;

$sql = 'blablabla';
$result = $sql['1']->query($sql);
while($row = mysql_fetch_array($result, MYSQL_ASSOC)){
       $sql2 = 'insert blablablabla';

Or something like that...

One other thing to check;

If you do a default install of MySQL, the default permissions on all new DB's and tables are READ ONLY.
If you have something like phpmyadmin installed, you can easily fix this by just going to the mysql DB and looking in the "user" and  "db" tables and put a "Y" in the "insert_priv" collumns for the particular table and user, then restart mysql.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.