我使用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);
我知道我有什么不对劲,但我无法发现错误,请问有什么建议吗?
由于
答案 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)
我发现使用数组更容易,而不是将其传递给语句。 但我想它只是一种味道。 就像我说的,这仅供参考,不会帮助您解决问题。