我是PDO的新手,并且使用以下代码从表单中收集2个PHP变量并在查询中使用它们:
$loginemail = $_REQUEST['loginemail'] ;
$loginpassword = $_REQUEST['loginpassword'] ;
$logincheck = "SELECT * FROM `ft_gameusers` WHERE `email` = '$loginemail' AND `password` = '$loginpassword'";
$query = $modx->query($logincheck);
if ($query) {
while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
echo $row['email'];
}
}
问题是,如果我将电子邮件和密码变量硬编码到MySQL查询中它工作正常 - 它似乎并不像PHP变量那样喜欢它们。
有谁知道我做错了什么? (PS:这是ModX Revo中的一个片段)
编辑:表格标签:
<form id="loginform" action="mysite.com/formprocess" method="post">
Email:
<input type="text" id="loginemail" name="loginemail">
Password:
<input type="password" id="loginpassword" name="loginpassword">
<button type="submit">Login</button>
</form>
答案 0 :(得分:2)
这是使用PDO / xPDO绑定参数的方法:
$loginemail = $_REQUEST['loginemail'] ;
$loginpassword = $_REQUEST['loginpassword'] ;
$logincheck = "SELECT * FROM `ft_gameusers` WHERE `email` = :loginemail AND `password` = :loginpassword";
$credentials = array(
':loginemail' => $loginemail,
':loginpassword' => $loginpassword,
);
$query = new xPDOCriteria($modx,$logincheck,$credentials);
if ($query->stmt && $query->stmt->execute()) {
while ($row = $query->stmt->fetch(PDO::FETCH_ASSOC)) {
echo $row['email'];
}
}
答案 1 :(得分:0)
试试这个
$logincheck = "SELECT * FROM `ft_gameusers` WHERE `email` = '".$loginemail."' AND `password` = '".$loginpassword.'";
答案 2 :(得分:0)
尝试更改此
<button type="submit">Login</button>
要
<input type="submit" id="submit" name="submit" value="Login">
这个post解释了<button>
并不总是兼容,并且可能只解释为什么使用post
传递的变量在另一方为空。
FUTHER INFO
在html5 <button>
元素
重要提示:如果您在HTML表单中使用该元素,则不同 浏览器可以提交不同的值。 Internet Explorer,早期版本 9,将提交文本和标签之间的同时 其他浏览器将提交value属性的内容。使用 元素以HTML格式创建按钮。
答案 3 :(得分:0)
我认为Gautam就在这里,通过一些小测试来了解实际情况:
// trim these just in case
$loginemail = trim($_REQUEST['loginemail']);
$loginpassword = trim($_REQUEST['loginpassword']);
$logincheck = "SELECT * FROM `ft_gameusers`
WHERE `email` = '$loginemail' AND `password` = '$loginpassword'";
// copy & run this in an sql editor:
echo $logincheck;
// then try Gautam's ~ correct the quotes syntax error after loginpassword
$logincheck2 = "SELECT * FROM `ft_gameusers`
WHERE `email` = '".$loginemail."' AND `password` = '".$loginpassword."';
echo $logincheck;