0

我是 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>
4

4 回答 4

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'];
    }
}

http://php.net/manual/en/pdostatement.bindparam.php

于 2012-09-20T06:59:57.147 回答
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;
于 2012-09-19T13:23:01.580 回答
0

像这样试试

$logincheck = "SELECT * FROM `ft_gameusers` WHERE `email` = '".$loginemail."' AND `password` = '".$loginpassword.'";
于 2012-09-19T06:24:27.223 回答
0

尝试从这里更改

<button type="submit">Login</button>

<input type="submit" id="submit" name="submit" value="Login">

这篇文章解释了这<button>并不总是兼容的,并且可能只是解释了为什么你传递的变量post在另一边是空的。

关于 html5<button>元素的更多信息

重要提示:如果您在 HTML 表单中使用该元素,不同的浏览器可能会提交不同的值。Internet Explorer 9 之前的版本将提交 and 标记之间的文本,而其他浏览器将提交 value 属性的内容。使用该元素在 HTML 表单中创建按钮。

于 2012-09-19T06:27:07.627 回答