 |
BOOK: Beginning PHP 5.3  | This is the forum to discuss the Wrox book Beginning PHP 5.3 by Matt Doyle; ISBN: 978-0-470-41396-8 |
|
Welcome to the p2p.wrox.com Forums.
You are currently viewing the BOOK: Beginning PHP 5.3 section of the Wrox Programmer to Programmer discussions. This is a community of software programmers and website developers including Wrox book authors and readers. New member registration was closed in 2019. New posts were shut off and the site was archived into this static format as of October 1, 2020. If you require technical support for a Wrox book please contact http://hub.wiley.com
|
|
|
|

October 25th, 2011, 01:27 AM
|
|
Authorized User
|
|
Join Date: Jun 2011
Posts: 51
Thanks: 9
Thanked 0 Times in 0 Posts
|
|
please I need help here ....insert() function
hello everbody
I got an error like this :
Code:
Query Failed / insert() function: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens
and I am using the same code but I didn't understand what does the error mean, where i have to fix or how to ????
this is my function
PHP Code:
public function insert(){
$conn = parent::connect();
$sql = "insert into " . TBL_MEMBERS . " (
username,
password,
firstName,
lastName,
joinDate,
gender,
favoriteGenre,
eamilAddress,
otherInterests
) values (
:username,
:password(:password),
:firstName,
:lastName,
:joinDate,
:gender,
:favoriteGenre,
:emailAddress,
:otherInterests
) ";
try {
$st = $conn->prepare($sql);
$st->bindValue(":username", $this->data["username"], PDO::PARAM_STR);
$st->bindValue(":password", $this->data["password"], PDO::PARAM_STR);
$st->bindValue(":firstName", $this->data["firstName"], PDO::PARAM_STR);
$st->bindValue(":lastName", $this->data["lastName"], PDO::PARAM_STR);
$st->bindValue(":joinDate", $this->data["joinDate"], PDO::PARAM_STR);
$st->bindValue(":gender", $this->data["gender"], PDO::PARAM_STR);
$st->bindValue(":favoriteGenre", $this->data["favoriteGenre"], PDO::PARAM_STR);
$st->bindValue(":emailAddress", $this->data["emailAddress"], PDO::PARAM_STR);
$st->bindValue(":otherInrerests", $this->data["otherInterests"], PDO::PARAM_STR);
$st->execute();
parent::disconnect($conn);
}catch (PDOException $e){
parent::disconnect($conn);
die("Query Failed / insert() function: " .$e->getmessage() );
}
}
}
I am using $member instead of $Member, is not a mistake.
and if you need to see all my member class here it is :
PHP Code:
<?php
require_once "dataObject.class.php";
class member extends dataObject {
protected $data = array(
"id" => "",
"username" => "",
"password" => "",
"firstName" => "",
"lastName" => "",
"joinDate" => "",
"gender" => "",
"favoriteGenre" => "",
"emailAddress" => "",
"otherInterests" => ""
);
protected $_genres = array (
"herror" => "Herror",
"thriller" => "Thriller",
"romance" => "Romance",
"sciFi" => "Sci-Fi",
"nonFiction" => "Non-Finction",
"crime" => "Crime"
);
public static function getMembers($startRow, $numRows, $order, $interest="") {
$conn = parent::connect();
$interestFound = $interest ? " WHERE otherInterests LIKE :interest " : "";
$sql = "SELECT SQL_CALC_FOUND_ROWS * FROM " . TBL_MEMBERS . "
$interestsFound ORDER BY $order LIMIT :startRow, :numRows";
try {
$st = $conn->prepare($sql);
$st->bindValue(":startRow", $startRow, PDO::PARAM_INT);
$st->bindValue(":numRows", $numRows, PDO::PARAM_INT);
if ($interest) $st->bindValue(":interest", "%$interest%", PDO::PARAM_STR);
$st->execute();
$members = array();
foreach ($st->fetchAll() as $row) {
$members[] = new member($row);
}
$st = $conn->query("SELECT found_rows() AS totalRows");
$row = $st->fetch();
parent::disconnect($conn);
return array( $members, $row["totalRows"] );
}catch (PDOException $e) {
parent::disconnect($conn);
die( "Query Failed! / getMembers() function : " . $e->getmessage() );
}
}
public static function getMember( $id) {
$conn = parent::connect();
$sql = "SELECT * FROM " . TBL_MEMBERS . " WHERE id = :id";
try {
$st = $conn->prepare($sql);
$st->bindValue(":id", $id, PDO::PARAM_INT);
$st->execute();
$row = $st->fetch();
parent::disconnect($conn);
if ($row)
return new member($row);
}catch (PDOException $e) {
parent::disconnect($conn);
die("Query Faild! / getMember() function: " . $e->getmessage() );
}
}
public function getGenderString() {
return ($this->data["gender"] == "f") ? "Female" : "Male" ;
}
public function getFavoriteGenreString() {
return ($this->_genres[$this->data["favoriteGenre"]] );
}
public static function getByUsername($username){
$conn = parent::connect();
$sql= "Select * from " . TBL_MEMBERS . " where username = :username";
try {
$st = $conn->prepare($sql);
$st->bindValue(":username", $username, PDO::PARAM_STR);
$st->execute();
$row = $st->fetch();
parent::disconnect($conn);
if ($row) return new member($row);
}catch (PDOException $e){
parent::disconnect($conn);
die ("Query Failed /getByUsername() function : " . $e->getmessage() );
}
}
public static function getByEmailAddress($emailAddress){
$conn = parent::connect();
$sql = "select * from " . TBL_MEMBERS . " where emailAddress = :emailAddress";
try{
$st = $conn->prepare($sql);
$st->bindValue(":emailAddress", $emailAddress, PDO::PARAM_STR);
$st->execute();
$row = $st->fetch();
parent::disconnect($conn);
if($row) return new member($row);
}catch (PDOException $e){
echo "Query Faild /getByEmailAddress() function: " . $e->getmessage();
}
}
public function getGenres() {
return $this->_genres;
}
public function insert(){
$conn = parent::connect();
$sql = "insert into " . TBL_MEMBERS . " (
username,
password,
firstName,
lastName,
joinDate,
gender,
favoriteGenre,
eamilAddress,
otherInterests
) values (
:username,
:password(:password),
:firstName,
:lastName,
:joinDate,
:gender,
:favoriteGenre,
:emailAddress,
:otherInterests
) ";
try {
$st = $conn->prepare($sql);
$st->bindValue(":username", $this->data["username"], PDO::PARAM_STR);
$st->bindValue(":password", $this->data["password"], PDO::PARAM_STR);
$st->bindValue(":firstName", $this->data["firstName"], PDO::PARAM_STR);
$st->bindValue(":lastName", $this->data["lastName"], PDO::PARAM_STR);
$st->bindValue(":joinDate", $this->data["joinDate"], PDO::PARAM_STR);
$st->bindValue(":gender", $this->data["gender"], PDO::PARAM_STR);
$st->bindValue(":favoriteGenre", $this->data["favoriteGenre"], PDO::PARAM_STR);
$st->bindValue(":emailAddress", $this->data["emailAddress"], PDO::PARAM_STR);
$st->bindValue(":otherInrerests", $this->data["otherInterests"], PDO::PARAM_STR);
$st->execute();
parent::disconnect($conn);
}catch (PDOException $e){
parent::disconnect($conn);
die("Query Failed / insert() function: " .$e->getmessage() );
}
}
}
?>
thank you so much, I know its hard to read other people's codes.
|
|

October 25th, 2011, 03:41 AM
|
|
Friend of Wrox
|
|
Join Date: May 2011
Posts: 125
Thanks: 0
Thanked 24 Times in 24 Posts
|
|
Greetings,
I am guessing here but your problem could be due to this:
Code:
:password(:password),
try changing it to:
Code:
password(:password),
that way it'll use the PASSWORD function to encrypt the supplied password.
|
|

October 25th, 2011, 10:05 PM
|
|
Authorized User
|
|
Join Date: Jun 2011
Posts: 51
Thanks: 9
Thanked 0 Times in 0 Posts
|
|
thanks, but still
thank you I change it and it was a mistak but I had another error its the same code number but it tells me this time that the parameter was not found:
Code:
SQLSTATE[HY093]:Invalid parameter number: parameter was not defined
I hope you know what does that mean, and do you know if there any php validator like html and css, it will vary useful for me.
thank you
|
|
 |