PDA

View Full Version : Creating a Record Problem in table


CoolAsCarlito
06-10-2008, 06:50 PM
Everytime I go to try and do a test run on my registration script it gives me this error:

Column count doesn't match value count at row 1

What can I do to correct this issue.


<?php
// Connects to your Database
if (!$link = mysql_connect('', '', '')) {
echo 'Could not connect to mysql';
exit;
}

if (!mysql_select_db('', $link)) {
echo 'Could not select database';
exit;
}

//This code runs if the form has been submitted
if (isset($_POST['submit'])) {

//This makes sure they did not leave any fields blank
if (!$_POST['type'] | !$_POST['username'] | !$_POST['pass'] | !$_POST['pass2'] ) {
die('You did not complete all of the required fields');
}

// checks if the username is in use
if (!get_magic_quotes_gpc()) {
$_POST['username'] = addslashes($_POST['username']);
}
$usercheck = $_POST['username'];
$check = mysql_query("SELECT username FROM members WHERE username = '$usercheck'")
or die(mysql_error());
$check2 = mysql_num_rows($check);

//if the name exists it gives an error
if ($check2 != 0) {
die('Sorry, the username '.$_POST['username'].' is already in use.');
}

// this makes sure both passwords entered match
if ($_POST['pass'] != $_POST['pass2']) {
die('Your passwords did not match. ');
}

// here we encrypt the password and add slashes if needed
$_POST['pass'] = md5($_POST['pass']);
if (!get_magic_quotes_gpc()) {
$_POST['pass'] = addslashes($_POST['pass']);
$_POST['username'] = addslashes($_POST['username']);
}

// now we insert it into the database
$insert = "INSERT INTO members (id, type, username, password)
VALUES (NULL, '".$_POST['id']."','".$_POST['type']."','".$_POST['username']."', '".$_POST['pass']."')";
$add_member = mysql_query($insert,$link) or die(mysql_error());


?>


<h1>Registered</h1>
<p>Thank you, you have registered - you may now login</a>.</p>

<?php
}
else
{
?>
<center><table border=1 cellpadding=5 cellspacing=0 width=350>
<font color="#CC0000"><h2><center>KOW Registration</h2></center></font>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<tr><td>Type:</td><td>
<select name="type">
<option>Singles</option><option>Tag Team</option><option>Stable</option><option>Manager/Valet</option><option>Staff</option><option>Referee</option></select>
</td></tr>
<tr><td>Username:</td><td>
<input type="text" name="username" maxlength="60">
</td></tr>
<tr><td>Password:</td><td>
<input type="password" name="pass" maxlength="10">
</td></tr>
<tr><td>Confirm Password:</td><td>
<input type="password" name="pass2" maxlength="10">
</td></tr>
<tr><th colspan=2><input type="submit" name="submit" value="Register"></th></tr> </table>
</form>

<?php
}
?>

Fumigator
06-10-2008, 07:20 PM
First off...

http://www.codingforums.com/showthread.php?t=68462

Now then, read the error message and it tells you what's wrong. Column count doesn't match value count. Your INSERT query has a different number of columns and values listed (4 columns, 5 values).


//oops, 4 columns and 5 values
$insert = "INSERT INTO members (id, type, username, password)
VALUES (NULL, '".$_POST['id']."','".$_POST['type']."','".$_POST['username']."', '".$_POST['pass']."')";

CoolAsCarlito
06-10-2008, 07:50 PM
So all I have to take out is the null wait that can't be right.

If I do that then the error comes up:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Singles','anguish', 'd67f4be6664ef283a637c7f320e0b939')' at line

And the code at line 2 is:

//Connects to your database

Fumigator
06-10-2008, 08:12 PM
Whenever I encounter a SQL syntax error where the problem isn't immediately obvious, the first thing I do is echo the entire query text (which in your case is your $insert variable), and if the problem is still not obvious, I cut/paste the query text into something like MyPhpAdmin and run the query outside the PHP environment. I get it working in another environment, then put it back into PHP.

derzok
06-10-2008, 08:34 PM
Whenever I encounter a SQL syntax error where the problem isn't immediately obvious, the first thing I do is echo the entire query text (which in your case is your $insert variable), and if the problem is still not obvious, I cut/paste the query text into something like MyPhpAdmin and run the query outside the PHP environment. I get it working in another environment, then put it back into PHP.

Listen to this Fumigator - this is exactly what I do too. You can solve almost any mysql error this way. If you still can't figure it out, google the error - if you were able to produce the error, I'm sure someone else on the internet was able to as well - and they probably have a solution.

I think it's usually better to find the source of the error yourself because it tends to increase your understanding of the language. Plus, you'll be less likely to produce the error in the future.

CoolAsCarlito
06-10-2008, 08:39 PM
Okay well thanks I did figure it out I had the wrong scripting to go connect the database stupid me but now when I go to try the script again it submits it but nothign happens just goes to a white screen obviously because I have no redirect tag but the thing is I go to check how many records have been posted and still nothing.


<?php
// Connects to your Database
mysql_connect("") or die(mysql_error());
mysql_select_db("") or die(mysql_error());

//This code runs if the form has been submitted
if (isset($_POST['submit'])) {

//This makes sure they did not leave any fields blank
if (!$_POST['type'] | !$_POST['username'] | !$_POST['pass'] | !$_POST['pass2'] ) {
die('You did not complete all of the required fields');
}

// checks if the username is in use
if (!get_magic_quotes_gpc()) {
$_POST['username'] = addslashes($_POST['username']);
}
$usercheck = $_POST['username'];
$check = mysql_query("SELECT username FROM members WHERE username = '$usercheck'")
or die(mysql_error());
$check2 = mysql_num_rows($check);

//if the name exists it gives an error
if ($check2 != 0) {
die('Sorry, the username '.$_POST['username'].' is already in use.');
}

// this makes sure both passwords entered match
if ($_POST['pass'] != $_POST['pass2']) {
die('Your passwords did not match. ');
}

// here we encrypt the password and add slashes if needed
$_POST['pass'] = md5($_POST['pass']);
if (!get_magic_quotes_gpc()) {
$_POST['pass'] = addslashes($_POST['pass']);
$_POST['username'] = addslashes($_POST['username']);
}

// now we insert it into the database
$insert = "INSERT INTO members (id, type, username, password)
VALUES (".$_POST['id']."','".$_POST['type']."','".$_POST['username']."', '".$_POST['pass']."')";

?>




<?php
}
else
{
?>
<center><table border=1 cellpadding=5 cellspacing=0 width=350>
<font color="#CC0000"><h2><center>KOW Registration</h2></center></font>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<tr><td>Type:</td><td>
<select name="type">
<option>Singles</option><option>Tag Team</option><option>Stable</option><option>Manager/Valet</option><option>Staff</option><option>Referee</option></select>
</td></tr>
<tr><td>Username:</td><td>
<input type="text" name="username" maxlength="60">
</td></tr>
<tr><td>Password:</td><td>
<input type="password" name="pass" maxlength="10">
</td></tr>
<tr><td>Confirm Password:</td><td>
<input type="password" name="pass2" maxlength="10">
</td></tr>
<tr><th colspan=2><input type="submit" name="submit" value="Register"></th></tr> </table>
</form>

<?php
}
?>

PappaJohn
06-10-2008, 08:47 PM
If you do as Fumigator suggests, you'll see the problem.

derzok
06-10-2008, 08:51 PM
Now it look like you're not running the insert query... I mean, you've formed it, you just aren't running it.

CoolAsCarlito
06-10-2008, 08:52 PM
I tried it this time and it didn't give me anything.