2012-09-19 76 views
0

我是新來的PDO和具有臨危2 PHP從表單VAR和使用在查詢後續代碼:鏌鋣和PDO:用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:這是鏌鋣雷沃內的片斷)

編輯:form標籤:

<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

表格是怎麼樣的? –

+0

向我們展示'

'標籤。 –

+0

@ JLC007上面加了 – MeltingDog

回答

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

+0

我希望這是一個測試用例,而不是以明文形式在數據庫中存儲密碼;) – okyanet

0

嘗試這樣

$logincheck = "SELECT * FROM `ft_gameusers` WHERE `email` = '".$loginemail."' AND `password` = '".$loginpassword.'"; 
+1

你改變了什麼?評估雙引號內的變量。 –

+0

他問那些用戶名,passowrd是不是把gong視爲php var,所以我給了他一個try..and它也會有效,並且可以檢查這個 – Gautam3164

+0

你的查詢和他的一樣。 –

0

嘗試改變從該

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

TO

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

這個post解釋說,<button>不總是兼容的,可能只是解釋爲什麼你的變量通過post通過另一邊是空的。

FUTHER INFO HTML5的<button>元素

重要的 :如果您在HTML表單中使用的元素,不同的 瀏覽器可以提交不同的值。 Internet Explorer,之前的版本號爲 9,將提交和標籤之間的文本,而其他瀏覽器則會提交value屬性的內容。使用 元素在HTML表單中創建按鈕。

+0

'$ _REQUEST'既有'$ _POST'也有$ _GET' –

+0

還有'$ _COOKIE'。 – Leri

+0

這沒有任何區別要麼恐怕 – MeltingDog

0

我認爲高塔姆的就在這裏,將ty幾個小測試,看看什麼是真正回事:

// 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; 
+0

嗯仍然不工作....它被建議ModX證券阻止它。有沒有人知道在PDO中正確執行查詢的方法? – MeltingDog