469,573 Members | 1,795 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 469,573 developers. It's quick & easy.

PHP Script stores data in wrong MySQL columns

I'm creating my first web application in PHP/MySQL, however, when I go to view the database contents, the data has been stored in the wrong columns. I've gone through my insertion code with a fine toothcomb and can see no errors which might cause this. I will post the code below, and you will see that I have some diagnostics built in, which show that the information (at least at that point) appears to be about to be stored in the correct columns.

I have 'checked', 'repaired' and 'flushed' the database using PHPMyAdmin and tried again. I have also restarted my PC several times too (although so far, it has always been very stable).

These are a list of some of the columns in my table called 'products' and along side them is the name of the columns data that is wrongly stored there:

NameModel - correct
Manufacturer - correct
Tagline - CONTAINS Ed_Main
Ed_Summary - CONTAINS Tagline
Ed_main - CONTAINS Ed_Summary

The rest of the columns are store correctly.

This is the diagnostic text that was output on the screen because of the diagnostic code in insert.php

Values
submit = Submit Query
namemodel = 1Name/Model
manufacturer = Manufacturer
tagline = Tagline
ed_summary = Ed Summary
ed_main = Main Editorial
features = Features
specs = Specs
options = Options
pic_thumb_100x100 = Thumbnail Picture
pic_1 = Picture 1
pic_2 = Picture 2
costprice = 1
retailprice = 2
supplierid = 3
curr_stock = 4
minstock = 5
maxstock = 6
The text to the left of the '=' sign is the Post HTTP header field name and to the right of the '=' is the contents of the form.

Looking at that, it is all good so far, as I typed in each text field some text to identify which field it should be in. EG. I typed 'Main Editorial' in the field called 'Ed_main' in the form that collects the data to insert.

However, when I check the actual contents of the database the data is stored in the wrong columns still.

Here is the full code of the page holding the form:

[HTML]

<html>
<head>
<title>Admin</title>
</head>
<body>

<form action="insert.php" method="post">
<input type="Submit" name="submit" />

Name/Model: <input type="text" name="namemodel" /><br />
Manufacturer: <input type="text" name="manufacturer" /><br />
Tagline: <input type="text" name="tagline" /><br />
Ed Summary: <textarea cols="20" rows="10" name="ed_summary"></textarea><br />
Main Editorial: <textarea cols="60" rows="20" name="ed_main"></textarea><br />
Features: <textarea cols="20" rows="20" name="features"></textarea><br />
Specs: <textarea cols="20" rows="10" name="specs"></textarea><br />
Options: <textarea cols="20" rows="10" name="options"></textarea><br />
Thumbnail Picture: <input type="text" name="pic_thumb_100x100" /><br />
Picture 1: <input type="text" name="pic_1" /><br />
Picture 2: <input type="text" name="pic_2" /><br />
Cost Price: <input type="text" name="costprice" /><br />
Retail Price: <input type="text" name="retailprice" /><br />
Supplier ID: <input type="text" name="supplierid" /><br />
Current Stock: <input type="text" name="curr_stock" /><br />
Minimum Stock: <input type="text" name="minstock" /><br />
Maximum Stock: <input type="text" name="maxstock" /><br />

<input type="Submit" name="submit" />
</form>
</body>
</html>

[/HTML]


Here is the code for insert.php

[PHP]

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled</title>
</head>

<body>
<?php
$username="removed for forum";
$password="removed for forum";
$database="myodbc_store";


if ($username="removed for forum") {

// process form
echo "Values <br>";
while (list($name, $value) = each($HTTP_POST_VARS)) {

echo "$name = $value<br>\n";

}}

$ProdID='';
$NameModel=$_POST['namemodel'];
$Manufacturer=$_POST['manufacturer'];
$Tagline=$_POST['tagline'];
$Ed_Summary=$_POST['ed_summary'];
$Ed_Main=$_POST['ed_main'];
$Features=$_POST['features'];
$Specs=$_POST['specs'];
$Options=$_POST['options'];
$Pic_Thumb_100x100=$_POST['pic_thumb_100x100'];
$Pic_1=$_POST['pic_1'];
$Pic_2=$_POST['pic_2'];
$CostPrice=$_POST['costprice'];
$RetailPrice=$_POST['retailprice'];
$SupplierID=$_POST['supplierid'];
$Curr_Stock=$_POST['curr_stock'];
$MinStock=$_POST['minstock'];
$MaxStock=$_POST['maxstock'];

$conn=odbc_connect($database,$username,$password);

$query = "INSERT INTO products VALUES ('$ProdID', '$NameModel', '$Manufacturer', '$Tagline', '$Ed_Summary', '$Ed_Main', '$Features', '$Specs', '$Options', '$Pic_Thumb_100x100', '$Pic_1', '$Pic_2', '$CostPrice', '$RetailPrice', '$SupplierID', '$Curr_Stock', '$MinStock', '$MaxStock')";

$resultset=odbc_exec($conn,$query) or die ("Error inserting data<BR>$query");

/* <!-- where:-
$sql is the variable containing the SQL to be applied
$cnn is the variable containing a valid MySQL resource
$resultset is the return from the function
--> */

odbc_close($conn);
?>

</body>
</html>

[/PHP]

I would really appreciate your help!

Thanks, pete
Jan 19 '06 #1
3 2988
This is fixed now. Thanks. :-)
Jan 19 '06 #2
Niheel
2,431 Expert Mod 2GB
Congrats. What was wrong?
Jan 19 '06 #3
Thanks. 3 things were wrong I think...

1) I was using the wrong kind of quote character.

2) I hadn't specified the fields that I was inserting to, in my query

3) My query wasn't inserting in the same order as the database columns were actually laid out.

I was able to diagnose using PHPMyAdmin to create and show me the query and then compare it to mine, then I could see the differences!

pete
Jan 20 '06 #4

Post your reply

Sign in to post your reply or Sign up for a free account.

Similar topics

3 posts views Thread by somaBoy MX | last post: by
11 posts views Thread by mikey_boy | last post: by
1 post views Thread by DartmanX | last post: by
7 posts views Thread by | last post: by
9 posts views Thread by Jerim79 | last post: by
1 post views Thread by Webber | last post: by
118 posts views Thread by Chuck Cheeze | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.