Prepared Statements and mySQL
am 27.12.2010 22:08:28 von ron.piggott
------=_NextPart_000_0016_01CBA5E0.4C5223E0
Content-Type: text/plain;
charset="utf-8"
Content-Transfer-Encoding: quoted-printable
I am trying to implement Prepared Statements on my web site and this is =
the first time I have ever used this. =20
#1) I received the error â=9Cclass mysql not definedâ=9D. =
That is a reference to the first line of code (below) where the database =
connection is established. =20
#2) How do I assign the auto_increment value to a variable use Prepared =
Statements? In the syntax I am attempting below =
â=9Crecordâ=9D is an auto_increment column.
#3) Do syntaxes such as â=9C$stmt->bindParam(':account_suspended', =
0000-00-00);â=9D require the date 0000-00-00 to be surrounded by =
â=98 ?
Thank you to the many of you who have supported me this year when I have =
had questions. I am physically handicapped, although I donâ=99t =
want to make a big deal about it. I have appreciated the opportunity to =
continue developing my PHP / mySQL programming skills in 2010. The =
Internet is a life line to me.
Ron
$dbh =3D new mysql('localhost', '$username', '$password', '$database2');
$stmt =3D $dbh->prepare("INSERT INTO `$database2`.`member` ( `record` , =
`first_name` , `last_name` , `address_1` , `address_2` , `address_3` , =
`address_4` , `address_5` , `email` , `prayer_community_alias` , =
`birth_month` , `birth_day` , `pass` , `validated` , `last_login` , =
`last_activity` , `birthday_records` , `greeting_reference` , =
`registration_ip_address`, `account_created` , `account_suspended` , =
`account_closed` , `referral_source` , `friends_of_ministry_package` , =
`security_question_1` , `security_answer_1` , `security_question_2` , =
`security_answer_2` , `security_question_3` , `security_answer_3` ) =
VALUES ( NULL , ':f1', ':l1', '', '', '', '', '', ':e1', '', =
':birth_month', ':birth_day', ':validate_password', ':validated', =
':last_login', ':last_activity', ':birthday_records', =
':greeting_reference', ':registration_ip_address', ':account_created', =
':account_suspended', ':account_closed', ':referral_source', =
':friends_of_ministry_package', ':security_question_1', '', =
':security_question_2', '', ':security_question_3', '' ) ON DUPLICATE =
KEY UPDATE `validated` =3D ':validated', `pass` =3D =
':validate_password', `account_suspended` =3D ':account_suspended', =
`account_closed` =3D ':account_closed', `last_activity` =3D =
':last_activity', `registration_ip_address` =3D =
':registration_ip_address';");
$stmt->bindParam(':f1', $f1);
$stmt->bindParam(':l1', $l1);
$stmt->bindParam(':e1', $e1);
$stmt->bindParam(':birth_month', 0);
$stmt->bindParam(':birth_day', 0);
$stmt->bindParam(':validate_password', $validate_password);
$stmt->bindParam(':validated', 5);
$stmt->bindParam(':last_login', $todays_date);
$stmt->bindParam(':last_activity', $todays_date);
$stmt->bindParam(':birthday_records', 15);
$stmt->bindParam(':security_question_1', 0);
$stmt->bindParam(':greeting_reference', 0);
$stmt->bindParam(':registration_ip_address', $registration_ip_address);
$stmt->bindParam(':account_created', $todays_date);
$stmt->bindParam(':account_suspended', 0000-00-00);
$stmt->bindParam(':account_closed', 0000-00-00);
$stmt->bindParam(':referral_source', 2);
$stmt->bindParam(':friends_of_ministry_package', 0);
$stmt->bindParam(':security_question_1', $security_question_1);
$stmt->bindParam(':security_question_2', $security_question_2);
$stmt->bindParam(':security_question_3', $security_question_3);
// insert one row
$stmt->execute();
$stmt->close();
The Verse of the Day
â=9CEncouragement from Godâ=99s Wordâ=9D
http://www.TheVerseOfTheDay.info
------=_NextPart_000_0016_01CBA5E0.4C5223E0--
Re: Prepared Statements and mySQL
am 28.12.2010 03:37:13 von David Robley
Ron Piggott wrote:
>
> I am trying to implement Prepared Statements on my web site and this is
> the first time I have ever used this.
>
> #1) I received the error ?class mysql not defined?. That is a reference
> #to the first line of code (below) where the database connection is
> #established.
>
> #2) How do I assign the auto_increment value to a variable use Prepared
> #Statements? In the syntax I am attempting below ?record? is an
> #auto_increment column.
>
> #3) Do syntaxes such as ?$stmt->bindParam(':account_suspended',
> #0000-00-00);? require the date 0000-00-00 to be surrounded by ? ?
>
> Thank you to the many of you who have supported me this year when I have
> had questions. I am physically handicapped, although I don?t want to make
> a big deal about it. I have appreciated the opportunity to continue
> developing my PHP / mySQL programming skills in 2010. The Internet is a
> life line to me.
>
> Ron
>
> $dbh = new mysql('localhost', '$username', '$password', '$database2');
>
> $stmt = $dbh->prepare("INSERT INTO `$database2`.`member` ( `record` ,
> `first_name` , `last_name` , `address_1` , `address_2` , `address_3` ,
> `address_4` , `address_5` , `email` , `prayer_community_alias` ,
> `birth_month` , `birth_day` , `pass` , `validated` , `last_login` ,
> `last_activity` , `birthday_records` , `greeting_reference` ,
> `registration_ip_address`, `account_created` , `account_suspended` ,
> `account_closed` , `referral_source` , `friends_of_ministry_package` ,
> `security_question_1` , `security_answer_1` , `security_question_2` ,
> `security_answer_2` , `security_question_3` , `security_answer_3` ) VALUES
> ( NULL , ':f1', ':l1', '', '', '', '', '', ':e1', '', ':birth_month',
> ':birth_day', ':validate_password', ':validated', ':last_login',
> ':last_activity', ':birthday_records', ':greeting_reference',
> ':registration_ip_address', ':account_created', ':account_suspended',
> ':account_closed', ':referral_source', ':friends_of_ministry_package',
> ':security_question_1', '', ':security_question_2', '',
> ':security_question_3', '' ) ON DUPLICATE KEY UPDATE `validated` =
> ':validated', `pass` = ':validate_password', `account_suspended` =
> ':account_suspended', `account_closed` = ':account_closed',
> `last_activity` = ':last_activity', `registration_ip_address` =
> ':registration_ip_address';");
>
> $stmt->bindParam(':f1', $f1);
> $stmt->bindParam(':l1', $l1);
> $stmt->bindParam(':e1', $e1);
> $stmt->bindParam(':birth_month', 0);
> $stmt->bindParam(':birth_day', 0);
> $stmt->bindParam(':validate_password', $validate_password);
> $stmt->bindParam(':validated', 5);
> $stmt->bindParam(':last_login', $todays_date);
> $stmt->bindParam(':last_activity', $todays_date);
> $stmt->bindParam(':birthday_records', 15);
> $stmt->bindParam(':security_question_1', 0);
> $stmt->bindParam(':greeting_reference', 0);
> $stmt->bindParam(':registration_ip_address', $registration_ip_address);
> $stmt->bindParam(':account_created', $todays_date);
> $stmt->bindParam(':account_suspended', 0000-00-00);
> $stmt->bindParam(':account_closed', 0000-00-00);
> $stmt->bindParam(':referral_source', 2);
> $stmt->bindParam(':friends_of_ministry_package', 0);
> $stmt->bindParam(':security_question_1', $security_question_1);
> $stmt->bindParam(':security_question_2', $security_question_2);
> $stmt->bindParam(':security_question_3', $security_question_3);
>
> // insert one row
> $stmt->execute();
>
> $stmt->close();
>
> The Verse of the Day
> ?Encouragement from God?s Word?
> http://www.TheVerseOfTheDay.info
#1) I think you re confusing mysql and mysqli
#2) Normal procedure is to eithr assign NULL to the auto-increment field, or
not reference it; I imagine the same applies for prepared statements
#3) Dates are entered aas strings, so need to be quoted as strings
Disclaimer; I have also not used prepared statements, but have looked
quickly at the mysqli docs :-)
Cheers
--
David Robley
My software never has bugs. It just develops random features.
Today is Boomtime, the 70th day of The Aftermath in the YOLD 3176.
--
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php