这很好用
$db = new PDO(<connection data>);
$username = $_POST['username'];
$password = $_POST['password'];
if(isset($_POST['username']) && isset($_POST['password'])){
$username = "name";
$pw = $db->prepare('SELECT * FROM table WHERE column1 = ?');
$pw->execute(array($username));
$result = $pw->fetchAll();
var_dump($result);
}
如果我在表单提交后使用$ _POST [&#39;用户名&#39;]我会得到var_dump($ result)的数组(0){};
$db = new PDO(<connection data>);
$username = $_POST['username'];
$password = $_POST['password'];
if(isset($_POST['username']) && isset($_POST['password'])){
$username = $_POST['username'];
//var_dump($username); --> string(7) " name"
$pw = $db->prepare('SELECT * FROM table WHERE column1 = ?');
$pw->execute(array($username));
$result = $pw->fetchAll();
var_dump($result);
}
你知道我犯了哪些错误吗?
答案 0 :(得分:1)
在第一个测试中,使用硬编码值,
$username = "name";
然后,当使用post值时,它变为
$username = $_POST['username']; // --> " name"
如你所见,还有一个额外的空间。如果不存在这样的空间,则可以尝试修剪该值,例如:
$username = trim($_POST['username']);
但是,如果在用户名中包含空格是错误的,那么您不应该#34;更正&#34;它本身,只是向用户报告错误(我认为这更像是一个UX方面,而不是编程方面)。