1
我想寫會查一下我的users
表中的用戶名或用戶的電子郵件是否已經存在的功能。這是在用戶註冊過程中用作支票。
我想能夠使用相同的功能來檢查電子郵件或名稱是否存在。我將通過發送2個字符串變量,一個$ tableColName來代替db表中的列(使用「userName」或「userEmail」,以及$ userIdentifier,它代表用戶名或用戶電子郵件。要查詢有關
我寫了下面(修改成自由站立):
<?php
$dbHost="localhost";
$dbName="project";
$dbUser="admin";
$dbPassword="abcd";
$dbh=new PDO("mysql:host=$dbHost;dbname=$dbName", $dbUser, $dbPassword);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$userIdentifier="apple"; // Or "[email protected]", which is an email
$tableColName="userName"; // Or "userEmail"
$sth=$dbh->prepare("SELECT * FROM users WHERE :tableColName = :userIdentifier");
$sth->bindParam(":tableColName", $tableColName);
$sth->bindParam(":userIdentifier", $userIdentifier);
$sth->execute();
print("PDO::FETCH_ASSOC: ");
print("Return next row as an array indexed by column name");
echo "</br>";
$result = $sth->fetch(PDO::FETCH_ASSOC);
print_r($result);
echo "</br>";
if ($result==null){
print("FALSE - result is null");
}else{
print("TRUE - result isn't null");
}
?>
這不起作用,什麼工作是我直接在查詢中指定的列名,而不是查詢使用參數,但我失去了我尋找的靈活性:
<?php
$dbHost="localhost";
$dbName="project";
$dbUser="admin";
$dbPassword="abcd";
$dbh=new PDO("mysql:host=$dbHost;dbname=$dbName", $dbUser, $dbPassword);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$userName="apple";
$sth=$dbh->prepare("SELECT * FROM users WHERE userName = :userIdentifier"); // Cannot be used for userEmail search.
$sth->bindParam(":userIdentifier", $userName);
$sth->execute();
print("PDO::FETCH_ASSOC: ");
print("Return next row as an array indexed by column name");
echo "</br>";
$result = $sth->fetch(PDO::FETCH_ASSOC);
print_r($result);
echo "</br>";
if ($result==null){
print("FALSE - result is null");
}else{
print("TRUE - result isn't null");
}
?>
我做錯了什麼?
感謝,
JDelage
迷人,我我會立即嘗試。 – JDelage 2011-06-16 03:24:28
對不起,我的格式不好我現在有重大的鍵盤問題。 ;) – stefgosselin 2011-06-16 03:27:03
是的,這似乎工作,我想知道他們爲什麼允許使用一個變量,但不是參數。無論如何,我可以處理它。謝謝。 – JDelage 2011-06-16 03:27:32