Может кто-нибудь помочь мне преобразовать это в PDO
// verify email and password pair
$userid = 0;
$query = sprintf("SELECT id FROM users WHERE LOWER(email)='%s' AND passwordhash='%s'",strtolower($email),$pwdhash);
$resource = mysql_query($query);
if ($resource)
{
$row = mysql_fetch_row($resource);
if (isset($row[0]))
$userid = $row[0];
}
Это моя попытка:
$userid = 0;
$resource = $dbh->query("SELECT id FROM users WHERE LOWER(email)=':email' AND passwordhash=':hash'");
$resource->bindValue(':email',$email,PDO::PARAM_STR);
$resource->bindValue(':hash',$pwdhash,PDO::PARAM_STR);
if ($resource->execute())
{
$result = array();
while ($row = $resource->fetch()) {
array_push($result, $row);
}
if (isset($result[0]))
$userid = $result[0];
$dbh = null;
return $result;
}
Я уверен, что что-то не так с частью внутри оператора if
И другая попытка:
$userid = 0;
$resource = $dbh->query("SELECT id FROM users WHERE LOWER(email)=':email' AND passwordhash=':hash'");
$resource->bindValue(':email',$email,PDO::PARAM_STR);
$resource->bindValue(':hash',$pwdhash,PDO::PARAM_STR);
if ($resource)
{
$row = $resource->fetchAll();
if (isset($row[0]))
$userid = $row[0];
}
// close database and return
$dbh = null;
return $userid;
}
Было еще несколько попыток …
Попробуй это,
использование prepare
скорее, чем query
результатом подготовки является дескриптор статистики, который можно использовать для привязки значений к именованным параметрам, которые вы использовали в подготовке.
$userid = 0;
$stmt = $dbh->prepare("SELECT id FROM users WHERE LOWER(email)=:email AND passwordhash=:hash");
$stmt->bindValue(':email',$email,PDO::PARAM_STR);
$stmt->bindValue(':hash',$pwdhash,PDO::PARAM_STR);
if ($stmt->execute())
{
$result = array();
while ($row = $stmt->fetch()) {
array_push($result, $row);
}
if (isset($result[0]))
$userid = $result[0];
$dbh = null;
return $result;
}
Других решений пока нет …