【发布时间】:2015-10-28 23:53:27
【问题描述】:
我正在尝试使用这样的准备好的语句插入值:
$dbh = new PDO("mysql:host=$hostname;dbname=$database", $username, $password);
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO user_table (first_name, last_name) VALUES (:tname, :tname2)";
$stmt = $dbh->prepare($sql);
$stmt -> bindParam(':tname', 'John');
$stmt -> bindParam(':tname2', 'Smith');
$stmt -> execute();
但是,这会引发致命错误:“PHP 致命错误:无法通过第 53 行 /Applications/MAMP/htdocs/live/test_create.php 中的引用传递参数 2”这是指这一行:$stmt -> bindParam(':tname', 'John');
是什么导致了这个问题?
【问题讨论】:
-
那个空间应该在那里吗?还是格式错误?
-
@Script47 哪个空间?
-
$stmt -> bindParam(':tname', 'John'); $stmt -> bindParam(':tname2', 'Smith'); $stmt -> execute()我看到了,$stmt变量后面的一堆空格。 -
@Script47 抱歉,仍然不确定您说的是哪些空间。在
'John'之前还是在其他地方?我尝试了上面的代码,但产生了同样的错误。 -
检查我的答案。哦,这张图片会告诉你我对空间的意思。 i.imgur.com/bcm4uMk.png