I understand mysql_
has been deprecated, but I'm just using it as a tool to learn from a book.
I'm trying to learn about placeholders and I got the following error when I clicked on "add record":
INSERT failed: EXECUTE statement USING @first,@last,@email,@user
Unknown prepared statement handler (statement) given to EXECUTE
using the following code:
if (isset($_POST['first']) && isset($_POST['last']) && isset($_POST['user_name']) && isset($_POST['email']))
{
$first = get_post('first');
$last = get_post('last');
$email = get_post('email');
$user_name = get_post('user_name');
// begin placeholde code
$query = 'PREPARE statement FROM "INSERT INTO user_master VALUES(?,?,?,?)"';
mysql_query($query);
$query = 'SET @first = "$first",' . 'SET @last = "$last",' . 'SET @email = "$email",' . 'SET @user_name = "$user_name",';
mysql_query($query);
$query = 'EXECUTE statement USING @first,@last,@email,@user';
mysql_query;
// end placeholder code
if(!mysql_query($query, $db_server)) echo "INSERT failed: $query <br />" . mysql_error() . "<br /><br />";
}
echo <<<END
<form action = "willingLog.html" method="post"><fieldset><legend>Sign Up:</legend> <pre>
First <input type="text" name="first" />
Last <input type="text" name="last" />
Email <input type="text" name="email" />
Username <input type="text" name="user_name" />
<input type="submit" value="AD RECORD" />
</pre></fieldset></form>
END;
// also from placeholder code
$query = 'DEALLOCATE PREPARE statement';
mysql_query($query);
// end placeholder code
I think your initial
PREPARE statement
query may be failing, and you should also change the line:to
The syntax for
SET
isSET variable_assignment [, variable_assignment] ...
but you were usingSET variable_assignment [, SET variable_assignment] ...
which would cause an error.To see if your first query has an error, try this:
There are 2 faults with your code.
So, if Scarlett O'Hara or Bobby Tables will decide to join your site - you're in trouble.
Therefore.
Always format your queries properly, i.e.
if you going to insert it as a string in your query
I think you have a simple typing error at
mysql_query;
where yo forgot to pass the query to mysql_query function so change it to
Hope it works