Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/91.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 意外'';(T_封装的_和_空格),应为标识符(T_字符串)或变量(T_变量)或数字(T_NUM_字符串)错误_Php_Html_Mysql_Pdo - Fatal编程技术网

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不客气,我很高兴听到我能够解决这个问题,干杯