Php 意外'';(T_封装的_和_空格),应为标识符(T_字符串)或变量(T_变量)或数字(T_NUM_字符串)错误
在注册脚本中,错误不断出现。守则如下:Php 意外'';(T_封装的_和_空格),应为标识符(T_字符串)或变量(T_变量)或数字(T_NUM_字符串)错误,php,html,mysql,pdo,Php,Html,Mysql,Pdo,在注册脚本中,错误不断出现。守则如下: try { $dbh = new PDO("mysql:host=$hostname;dbname=booter", $username, $password); echo 'Connected to database<br />'; /*** INSERT data ***/ $count = $dbh->exec("INSERT INTO members(username, password, email) VALUE
try {
$dbh = new PDO("mysql:host=$hostname;dbname=booter", $username, $password);
echo 'Connected to database<br />';
/*** INSERT data ***/
$count = $dbh->exec("INSERT INTO members(username, password, email) VALUES ('$_POST['username']', '$hashedpassword', '$_POST['email']')");
/*** close the database connection ***/
$dbh = null;
}
catch(PDOException $e)
{
echo $e->getMessage();
}
试试看{
$dbh=newpdo(“mysql:host=$hostname;dbname=booter”,$username,$password);
echo“已连接到数据库
”;
/***插入数据***/
$count=$dbh->exec(“插入到成员(用户名、密码、电子邮件)中)值(“$\u POST['username']”、“$hashedpassword'、“$\u POST['email']”);
/***关闭数据库连接***/
$dbh=null;
}
捕获(PDO$e)
{
echo$e->getMessage();
}
对此的任何修复(以及任何有助于安全性的提示)都将非常感谢 问题在于这一行:
('$_POST['username']', '$hashedpassword', '$_POST['email']')
哪些是POST数组中需要删除的引号
然而,这一点都不安全,您应该使用预先准备好的语句,因为这会让您面临更大的风险
首先将变量分配给POST数组:
$username = $_POST['username'];
$hashedpassword = "The way you're getting this from";
$email = $_POST['email'];
然后使用准备好的语句,使用?
作为占位符:
$query= "INSERT INTO members (username, password, email) VALUES (?, ?, ?)";
$result = $dbh->prepare($query);
$count = $result->execute(array($username, $hashedpassword, $email));
有关PDO编制的报表的更多信息,请访问:
脚注: 我注意到,在您发布的另一个问题中,您正在使用
mysqli\uu
函数
如果您仍在使用
mysqli\uuu
连接或mysqli\uu
函数存在于代码中的其他地方,则不能混合使用MySQL API。如果您切换到IDE(例如NetBeans、Eclipse、PHP Storm),则包含语法错误的行将在编辑器中自动为您突出显示。感谢您的建议!错误已经修复,准备好的语句已经实现。不,在我最后一个问题之后,我从mySQLi切换到PDO。@tmello01不客气,我很高兴听到我能够解决这个问题,干杯