0

I am using PHP PDO to insert into a MYSQL database using PHP. I am getting the error:

Fatal error: Cannot pass parameter 2 by reference in /home/sandyit/public_html/hosting/findibuzz/design2/sign-up.php on line 200

This is my code:

$ID is an auto incremented integer while the rest are varchar variables filled out as below as an example:

$db = new PDO('mysql:host=localhost;dbname=dbname;charset=utf8', 'dbusername', 'dbpass');

$FULLNAME = "David";
$PW_HASH = "sadsad";
$SALT = "adadad";
$EMAIL_ADDRESS = "david@gmail.com";


$ID=0;
$addrequest = $db->prepare("INSERT INTO FB_USERS (ID,FULL_NAME,PASSWORD,PASSWORD_SALT,EMAIL_ADDRESS) VALUES (:ID,:FULL_NAME,:PASSWORD,:PASSWORD_SALT,:EMAIL_ADDRESS)");
$addrequest->bindParam(':ID',$ID, PDO::PARAM_INT);
$addrequest->bindParam(':FULL_NAME',$FULL_NAME, PDO::PARAM_STR);
$addrequest->bindParam(':PASSWORD',$PW_HASH, PDO::PARAM_STR);
$addrequest->bindParam(':PASSWORD_SALT',$SALT, PDO::PARAM_STR);
$addrequest->bindParam(':EMAIL_ADDRESS',$EMAIL_ADDRESS, PDO::PARAM_STR);
$addrequest->execute();
$addrequest->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

I know i have something wrong, but i cannot spot the error, can i have some advise please?

Thanks

user3657758
  • 37
  • 1
  • 8

2 Answers2

2

Remove quotation marks from '$ID'

$addrequest->bindParam(':ID',$ID, PDO::PARAM_INT);
Unlink
  • 973
  • 1
  • 7
  • 14
2

Just for reference. I know this wont help solve your problem, but you could do something like this (see code below) to achieve the same result:

$db = new PDO('mysql:host=localhost;dbname=dbname;charset=utf8', 'dbusername', 'dbpass');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$sql = "INSERT INTO FB_USERS (FULL_NAME,PASSWORD,PASSWORD_SALT,EMAIL_ADDRESS)
        VALUES (:FULL_NAME,:PASSWORD,:PASSWORD_SALT,:EMAIL_ADDRESS)";
$stmt = $db->prepare($sql);
$params = array
(
    'FULL_NAME'=>'David',
    'PASSWORD'=>'sadsad',
    'PASSWORD_SALT'=>'adadad',
    'EMAIL_ADDRESS'=>'david@gmail.com'
);
$stmt->execute($params)

I find it easier to work with an array and than to just pass it to the statment. But I guess its just a mather of taste. Like I said this is just for reference and wont help you resolve your issue.

Your Common Sense
  • 156,878
  • 40
  • 214
  • 345
Sebastien
  • 1,308
  • 2
  • 15
  • 39