[PHP] Re: php can't insert data mysql table

2012-10-01 Thread Jim Giner

On 10/1/2012 12:32 AM, Tim Dunphy wrote:

Hello list,

  I'm trying to learn and get comfortable with HTML forms in PHP. In one
example I am trying to include a file upload in one of the forms. I can
connect to the database but for some reason the MySQL query string is bad.
I've been over this for a while now and I think the problem is with the
form. I was hoping to get the esteemed opinion of the list in where I may
be going wrong.

This code:

!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN
   http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd;
html xmlns=http://www.w3.org/1999/xhtml; xml:lang=en lang=en
head
   meta http-equiv=Content-Type content=text/html; charset=utf-8 /
   titleGuitar Wars - Add Your High Score/title
   link rel=stylesheet type=text/css href=style.css /
/head
body
   h2Guitar Wars - Add Your High Score/h2

?php
   if (isset($_POST['submit'])) {
 // Grab the score data from the POST
 $name = $_POST['name'];
 $score = $_POST['score'];
 $screenshot = $_FILES['screenshot']['name'];

 if (!empty($name)  !empty($score)) {
   // Connect to the database
   $dbc = mysqli_connect('localhost', 'admin', 'secretsauce', 'gwdb')
   or die('Cannot connect to database');

   // Write the data to the database
   $query = INSERT INTO guitarwars VALUES (0, NOW(), '$name', '$score',
'$screenshot');
   mysqli_query($dbc, $query)
  or die('Cannot insert query');

   // Confirm success with the user
   echo 'pThanks for adding your new high score!/p';
   echo 'pstrongName:/strong ' . $name . 'br /';
   echo 'strongScore:/strong ' . $score . '/p';
   echo 'pa href=index.phplt;lt; Back to high scores/a/p';

   // Clear the score data to clear the form
   $name = ;
   $score = ;

   mysqli_close($dbc);
 }
 else {
   echo 'p class=errorPlease enter all of the information to add
your high score./p';
 }
   }
?

   hr /
   form enctype=multipart/form-data method=post action=?php echo
$_SERVER['PHP_SELF']; ?
 input type=hidden name=MAX_FILE_SIZE value=32768 /
 label for=nameName:/label
 input type=text id=name name=name value=?php if
(!empty($name)) echo $name; ? /br /
 label for=scoreScore:/label
 input type=text id=score name=score value=?php if
(!empty($score)) echo $score; ? /
 br /
 label for=screenshotScreenshot:/label
 input type=file id=screenshot name=screenshot /
 hr /
 input type=submit value=Add name=submit /
   /form
/body
/html

Results in this output:

Guitar Wars - Add Your High Score Cannot insert query

Thanks again for your help. This is an awesome list!


Tim


You should have your error settings set to show everything.
I include these three lines in all my development work:

error_reporting(E_ALL);
ini_set('display_errors', '1');
set_time_limit(2);

In this case, I do think that your insert statement is incorrect - I 
could be wrong.  I think the VALUES clause s/b just 'VALUE'.  Also if 
you added MYSQLI_ERROR to your error handling you should get a very 
helpful message.


--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] Re: php can't insert data mysql table

2012-10-01 Thread Tommy Pham
On Mon, Oct 1, 2012 at 6:03 AM, Jim Giner jim.gi...@albanyhandball.com wrote:

 In this case, I do think that your insert statement is incorrect - I could
 be wrong.  I think the VALUES clause s/b just 'VALUE'.  Also if you added
 MYSQLI_ERROR to your error handling you should get a very helpful message.


VALUES also work.  See http://dev.mysql.com/doc/refman/5.5/en/insert.html

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] Re: php can't insert data mysql table

2012-10-01 Thread Jim Giner

On 10/1/2012 9:12 AM, Tommy Pham wrote:

On Mon, Oct 1, 2012 at 6:03 AM, Jim Giner jim.gi...@albanyhandball.com wrote:


In this case, I do think that your insert statement is incorrect - I could
be wrong.  I think the VALUES clause s/b just 'VALUE'.  Also if you added
MYSQLI_ERROR to your error handling you should get a very helpful message.



VALUES also work.  See http://dev.mysql.com/doc/refman/5.5/en/insert.html


Yeah - I just saw it in one of my scripts.

So - adding the error handling and the call to mysqli_error should help 
the OP diagnose his problem.


--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP] Re: php can't insert data mysql table

2012-10-01 Thread Jim Giner

On 10/1/2012 12:32 AM, Tim Dunphy wrote:

Hello list,

  I'm trying to learn and get comfortable with HTML forms in PHP. In one
example I am trying to include a file upload in one of the forms. I can
connect to the database but for some reason the MySQL query string is bad.
I've been over this for a while now and I think the problem is with the
form. I was hoping to get the esteemed opinion of the list in where I may
be going wrong.

This code:

!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN
   http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd;
html xmlns=http://www.w3.org/1999/xhtml; xml:lang=en lang=en
head
   meta http-equiv=Content-Type content=text/html; charset=utf-8 /
   titleGuitar Wars - Add Your High Score/title
   link rel=stylesheet type=text/css href=style.css /
/head
body
   h2Guitar Wars - Add Your High Score/h2

?php
   if (isset($_POST['submit'])) {
 // Grab the score data from the POST
 $name = $_POST['name'];
 $score = $_POST['score'];
 $screenshot = $_FILES['screenshot']['name'];

 if (!empty($name)  !empty($score)) {
   // Connect to the database
   $dbc = mysqli_connect('localhost', 'admin', 'secretsauce', 'gwdb')
   or die('Cannot connect to database');

   // Write the data to the database
   $query = INSERT INTO guitarwars VALUES (0, NOW(), '$name', '$score',
'$screenshot');
   mysqli_query($dbc, $query)
  or die('Cannot insert query');

   // Confirm success with the user
   echo 'pThanks for adding your new high score!/p';
   echo 'pstrongName:/strong ' . $name . 'br /';
   echo 'strongScore:/strong ' . $score . '/p';
   echo 'pa href=index.phplt;lt; Back to high scores/a/p';

   // Clear the score data to clear the form
   $name = ;
   $score = ;

   mysqli_close($dbc);
 }
 else {
   echo 'p class=errorPlease enter all of the information to add
your high score./p';
 }
   }
?

   hr /
   form enctype=multipart/form-data method=post action=?php echo
$_SERVER['PHP_SELF']; ?
 input type=hidden name=MAX_FILE_SIZE value=32768 /
 label for=nameName:/label
 input type=text id=name name=name value=?php if
(!empty($name)) echo $name; ? /br /
 label for=scoreScore:/label
 input type=text id=score name=score value=?php if
(!empty($score)) echo $score; ? /
 br /
 label for=screenshotScreenshot:/label
 input type=file id=screenshot name=screenshot /
 hr /
 input type=submit value=Add name=submit /
   /form
/body
/html

Results in this output:

Guitar Wars - Add Your High Score Cannot insert query

Thanks again for your help. This is an awesome list!


Tim

ON second glance - your table seems to have 4 fields: 
id,date,id,name,screenshot.


Your insert has 5 values: VALUES (0, NOW(), '$name', '$score', 
'$screenshot')


That right there is going to throw an error.

BTW - You're saving the name of the screen shot file but are you 
actually saving the uploaded file somewhere else in your code?  Didn't 
see it here and just wondered.


--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP] Re: php can't insert data mysql table

2012-10-01 Thread Jim Giner
oops - I added a an extra id field.  There were only 4 in OP's 
DESCRIBE email.


--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] Re: php can't insert data mysql table

2012-10-01 Thread Tim Dunphy
hey thanks guys adding debugging info worked.

Actually it was mysqli_error() providing me with a specific error of where
the problem was.

Cannot insert query:Duplicate entry '0' for key 'PRIMARY'

This is the data in the table

mysql select * from guitarwars;
++-+---+---+---+
| id | date| name  | score | screenshot|
++-+---+---+---+
|  0 | 2012-10-01 11:55:45 | Tommy Tutone  |  2442 | bg_titlestrip.jpg |
|  1 | 2012-10-01 08:34:18 | Dunphy| 2 | proof.jpg |
|  2 | 2012-10-01 00:25:53 | ray davies|  NULL | 2241  |
|  3 | 2008-04-22 14:37:34 | Paco Jastorius|  NULL | NULL  |
|  4 | 2008-04-22 21:27:54 | Nevil Johansson   |  NULL | NULL  |
|  5 | 2008-04-23 09:12:53 | Belita Chevy  |  NULL | NULL  |
|  6 | 2008-04-23 14:09:50 | Kenny Lavitz  |  NULL | NULL  |
|  7 | 2008-04-24 08:13:52 | Phiz Lairston |  NULL | NULL  |
|  8 | 2008-04-25 07:22:19 | Jean Paul Jones   |  NULL | NULL  |
|  9 | 2008-04-25 11:49:23 | Jacob Scorcherson |  NULL | NULL  |
++-+---+---+---+


This was the query I was using:

$query = INSERT INTO guitarwars  (date, name, score, screenshot) VALUES
(NOW(), '$name', '$score', '$screenshot');

It seems to be inserting a default value of 0 since the id is not being
specified and that's when I realized that I had failed to auto_increment
the id column. D'oh! So once I did that everything worked like a charm.

@Ken
First -- NEVER post code with your database username/password. Since you
did, change your db password immediately.

Well actually I did not. Did you really think 'secretsauce' was my
password? :) But I guess you're right in that this may be a little
ambiguous when seeking advice in lists so from now on I will take your
advice on making login information unambiguously fake in the form of
user='' and password='xxx'.

@Stuart
But take note of what everyone else is saying. You should be getting the
error message when this happens which will tell you exactly what the
problem is, above and beyond Cannot insert query (which, btw, makes no
sense at all :)).

Ok well I'm using an 'insert' query so I'm not sure why you say that this
makes no sense at all. :)) If you don't mind giving this n00b advice what
would be a better/more accurate error message?

They take away from this for me was.. don't skimp on the error messages!
The one I got was so clear that fixing the problem was easy at that point.

But thanks again guys.. this list has been an indispensable source source
of wisdom on my journey in learning PHP.

Tim


Thanks again guys,
Tim



-- 
GPG me!!

gpg --keyserver pool.sks-keyservers.net --recv-keys F186197B


Re: [PHP] Re: php can't insert data mysql table

2012-10-01 Thread Jim Giner

On 10/1/2012 12:20 PM, Tim Dunphy wrote:

hey thanks guys adding debugging info worked.

Actually it was mysqli_error() providing me with a specific error of where
the problem was.

Cannot insert query:Duplicate entry '0' for key 'PRIMARY'

This is the data in the table

mysql select * from guitarwars;
++-+---+---+---+
| id | date| name  | score | screenshot|
++-+---+---+---+
|  0 | 2012-10-01 11:55:45 | Tommy Tutone  |  2442 | bg_titlestrip.jpg |
|  1 | 2012-10-01 08:34:18 | Dunphy| 2 | proof.jpg |
|  2 | 2012-10-01 00:25:53 | ray davies|  NULL | 2241  |
|  3 | 2008-04-22 14:37:34 | Paco Jastorius|  NULL | NULL  |
|  4 | 2008-04-22 21:27:54 | Nevil Johansson   |  NULL | NULL  |
|  5 | 2008-04-23 09:12:53 | Belita Chevy  |  NULL | NULL  |
|  6 | 2008-04-23 14:09:50 | Kenny Lavitz  |  NULL | NULL  |
|  7 | 2008-04-24 08:13:52 | Phiz Lairston |  NULL | NULL  |
|  8 | 2008-04-25 07:22:19 | Jean Paul Jones   |  NULL | NULL  |
|  9 | 2008-04-25 11:49:23 | Jacob Scorcherson |  NULL | NULL  |
++-+---+---+---+


This was the query I was using:

$query = INSERT INTO guitarwars  (date, name, score, screenshot) VALUES
(NOW(), '$name', '$score', '$screenshot');

It seems to be inserting a default value of 0 since the id is not being
specified and that's when I realized that I had failed to auto_increment
the id column. D'oh! So once I did that everything worked like a charm.

@Ken

First -- NEVER post code with your database username/password. Since you

did, change your db password immediately.

Well actually I did not. Did you really think 'secretsauce' was my
password? :) But I guess you're right in that this may be a little
ambiguous when seeking advice in lists so from now on I will take your
advice on making login information unambiguously fake in the form of
user='' and password='xxx'.

@Stuart
But take note of what everyone else is saying. You should be getting the
error message when this happens which will tell you exactly what the
problem is, above and beyond Cannot insert query (which, btw, makes no
sense at all :)).

Ok well I'm using an 'insert' query so I'm not sure why you say that this
makes no sense at all. :)) If you don't mind giving this n00b advice what
would be a better/more accurate error message?

They take away from this for me was.. don't skimp on the error messages!
The one I got was so clear that fixing the problem was easy at that point.

But thanks again guys.. this list has been an indispensable source source
of wisdom on my journey in learning PHP.

Tim


Thanks again guys,
Tim



I think the comment about your cannot insert query was because it 
really did not make sense.  Once truly cannot insert a query.  Since 
you ask tho, a more approp message might be
Insert query failed to execute.brError returned was  . 
mysqli_error() . brQuery was $q


As for your index issue - you are using an autoincrement(?) field as the 
primary key.  Is this related to another record in your db?  If not, why 
even have the primary key?


--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] Re: php can't insert data mysql table

2012-10-01 Thread Tim Dunphy

 I think the comment about your cannot insert query was because it really
 did not make sense.  Once truly cannot insert a query.  Since you ask
 tho, a more approp message might be
 Insert query failed to execute.brError returned was  . mysqli_error()
 . brQuery was $q

 As for your index issue - you are using an autoincrement(?) field as the
 primary key.  Is this related to another record in your db?  If not, why
 even have the primary key?

 Hey! I really like your error message. Borrowing it! :) Yes I am now using
auto_increment, and that's what seemed to solve my issue. Looks like a
simple omission in forgetting to use auto_increment and using primary key.
I usually know better. I'll blame this one on the clonopin. lol

thank you
tim

On Mon, Oct 1, 2012 at 12:30 PM, Jim Giner jim.gi...@albanyhandball.comwrote:

 On 10/1/2012 12:20 PM, Tim Dunphy wrote:

 hey thanks guys adding debugging info worked.

 Actually it was mysqli_error() providing me with a specific error of where
 the problem was.

 Cannot insert query:Duplicate entry '0' for key 'PRIMARY'

 This is the data in the table

 mysql select * from guitarwars;
 ++-+--**-+---+**
 ---+
 | id | date| name  | score | screenshot
  |
 ++-+--**-+---+**
 ---+
 |  0 | 2012-10-01 11:55:45 | Tommy Tutone  |  2442 |
 bg_titlestrip.jpg |
 |  1 | 2012-10-01 08:34:18 | Dunphy| 2 | proof.jpg
   |
 |  2 | 2012-10-01 00:25:53 | ray davies|  NULL | 2241
  |
 |  3 | 2008-04-22 14:37:34 | Paco Jastorius|  NULL | NULL
  |
 |  4 | 2008-04-22 21:27:54 | Nevil Johansson   |  NULL | NULL
  |
 |  5 | 2008-04-23 09:12:53 | Belita Chevy  |  NULL | NULL
  |
 |  6 | 2008-04-23 14:09:50 | Kenny Lavitz  |  NULL | NULL
  |
 |  7 | 2008-04-24 08:13:52 | Phiz Lairston |  NULL | NULL
  |
 |  8 | 2008-04-25 07:22:19 | Jean Paul Jones   |  NULL | NULL
  |
 |  9 | 2008-04-25 11:49:23 | Jacob Scorcherson |  NULL | NULL
  |
 ++-+--**-+---+**
 ---+


 This was the query I was using:

 $query = INSERT INTO guitarwars  (date, name, score, screenshot) VALUES
 (NOW(), '$name', '$score', '$screenshot');

 It seems to be inserting a default value of 0 since the id is not being
 specified and that's when I realized that I had failed to auto_increment
 the id column. D'oh! So once I did that everything worked like a charm.

 @Ken

 First -- NEVER post code with your database username/password. Since you

 did, change your db password immediately.

 Well actually I did not. Did you really think 'secretsauce' was my
 password? :) But I guess you're right in that this may be a little
 ambiguous when seeking advice in lists so from now on I will take your
 advice on making login information unambiguously fake in the form of
 user='' and password='xxx'.

 @Stuart
 But take note of what everyone else is saying. You should be getting the
 error message when this happens which will tell you exactly what the
 problem is, above and beyond Cannot insert query (which, btw, makes no
 sense at all :)).

 Ok well I'm using an 'insert' query so I'm not sure why you say that this
 makes no sense at all. :)) If you don't mind giving this n00b advice what
 would be a better/more accurate error message?

 They take away from this for me was.. don't skimp on the error messages!
 The one I got was so clear that fixing the problem was easy at that point.

 But thanks again guys.. this list has been an indispensable source source
 of wisdom on my journey in learning PHP.

 Tim


 Thanks again guys,
 Tim



  I think the comment about your cannot insert query was because it
 really did not make sense.  Once truly cannot insert a query.  Since you
 ask tho, a more approp message might be
 Insert query failed to execute.brError returned was  . mysqli_error()
 . brQuery was $q

 As for your index issue - you are using an autoincrement(?) field as the
 primary key.  Is this related to another record in your db?  If not, why
 even have the primary key?



 --
 PHP General Mailing List (http://www.php.net/)
 To unsubscribe, visit: http://www.php.net/unsub.php




-- 
GPG me!!

gpg --keyserver pool.sks-keyservers.net --recv-keys F186197B