簡體   English   中英

如何有效地替換PDO中的(mysql_result(mysql_query())?

[英]How to effectively replace (mysql_result(mysql_query()) in PDO?

由於用PDO代替mysql_*命令重寫Web的過程幾乎完成,因此我現在正在測試更改后的功能。 而且似乎我為mysql_result(mysql_query()更改的函數總是返回true,為什么呢?讓我們看一下原始的和更改的代碼:

if (mysql_result(mysql_query("SELECT COUNT(*) FROM account WHERE id='".$_SESSION["user_id"]."' AND online=1"), 0)>0)
{
  return true; 
}
else
  return false;

並在這里更改代碼:

$stmt = $db_login->prepare("SELECT COUNT(*) FROM account WHERE id=:id AND online=1");
$stmt->bindValue(':id', $_SESSION["user_id"], PDO::PARAM_INT);
$stmt->execute();
$results_login = $stmt->fetch(PDO::FETCH_ASSOC);
$rows = count($results_login);
if ($rows > 0)
{
  return true; 
}
else
  return false;

那么,哪里出了問題,為什么即使列的online = 0時也總是返回true? 謝謝

$stmt->fetch從結果集中獲取一行 您從中得到的是一個包含所有選定列的數組,看起來像這樣:

array(
    'COUNT(*)' => 42
)

該數組上的count()始終為1

您需要檢查提取的行的內容:

if ($result_login['COUNT(*)'] > 0)

最好將此列別名為一個更好的名稱:

SELECT COUNT(*) AS `count` ...

然后:

if ($result_login['count'] > 0)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM