Fatal error occurred in execute. Cause was bindValue argument (PHP)

Aug 25, 2020 PHP MySQL Beginner Learning

Fatal error occurred in #execute. The cause was bindValue

[Error code]

$name = John;
$id = 1;

$sql = SELECT * FROM bbs WHERE name? OR id=?
$statement = prepare($sql);
$statement->bindValue(1, $name);
$statement->bindValue(2, $id);
fatal error:C in...

I do not understand the cause at all with an error like this! If you have studied a little, you may find that this is the cause at first glance. It took me hours to notice.

**The answer is the third argument of bindValue! **

If you do not enter the third argument of bindValue, STR type will be set as an initial value. I was entering a numeric type there, so an error occurred.

No hassle when using bindValue

$statement->bindValue(1, $name, PDO::PARAM_STR); //STR type
$statement->bindValue(2, $id, PDO::PARAM_INT); //INT type

You can prevent such mistakes by specifying the third argument like. I would be happy if it would be helpful for those who are new to programming and are stuck.

#reference [PHP official document] https://www.php.net/manual/ja/pdostatement.bindvalue.php