致命错误:使用PHP和MYSQL时,无法通过引用传递参数2

时间:2014-06-19 19:15:51

标签: php mysql pdo

我使用PHP PDO使用PHP插入MYSQL数据库。我收到了错误:

  

致命错误:无法通过引用传递参数2   /home/sandyit/public_html/hosting/findibuzz/design2/sign-up.php on   第200行

这是我的代码:

$ ID是一个自动递增的整数,其余的是varchar变量,如下所示:

$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);

我知道我有什么不对劲,但我无法发现错误,请问有什么建议吗?

由于

2 个答案:

答案 0 :(得分:2)

'$ID'

中删除引号
$addrequest->bindParam(':ID',$ID, PDO::PARAM_INT);

答案 1 :(得分:2)

仅供参考。我知道这不会有助于解决您的问题,但您可以执行类似的操作(请参阅下面的代码)以获得相同的结果:

$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)

我发现使用数组更容易,而不是将其传递给语句。 但我想它只是一种味道。 就像我说的,这仅供参考,不会帮助您解决问题。