在我的PDO语句中,我使用以下方法将数据插入SQL:
//insert into database with a prepared statement
$stmt = $db->prepare('INSERT INTO members (username,password,email,active) VALUES (:username, :password, :email, :active)');
$stmt->execute(array(
':username' => $_POST['username'],
':password' => $hashedpassword,
':email' => $_POST['email'],
':active' => $activasion
));
我的问题是我收到一条警告信息Dont Access superglobal variable $_post directly
谷歌之后我发现了这个解决方案filter_input(INPUT_POST, 'var_name')
而不是$_POST['var_name']
但这适用于PHP
PDO
是否有任何方法可以替换$_POST
中的$_GET
和PDO
?
答案 0 :(得分:1)
PDO
不是另一种语言。它是一个用于连接和操作数据源的PHP扩展。
您可以在代码中使用filter_input(INPUT_POST, 'username')
而不会出现问题。
$stmt = $db->prepare('INSERT INTO members (username,password,email,active) VALUES (:username, :password, :email, :active)');
$stmt->execute(array(
':username' => filter_input(INPUT_POST, 'username'),
':password' => $hashedpassword,
':email' => filter_input(INPUT_POST, 'email'),
':active' => $activasion
));
这应该可以正常使用,但我不明白为什么你不能直接访问$_POST
,可以解决它的问题。
答案 1 :(得分:0)
filter_input(INPUT_POST, 'username')
代替$_POST['username']
应该有用。
答案 2 :(得分:-1)
在变量
中使用$ _POST值$stmt = $db->prepare('INSERT INTO members (username,password,email,active) VALUES (:username, :password, :email, :active)');
$username = $_POST['username'];
$email = $_POST['email'];
$stmt->execute(array(
':username' => $username,
':password' => $hashedpassword,
':email' => $email,
':active' => $activasion
));