簡體   English   中英

mysql_num_rows產生意外結果

[英]mysql_num_rows give unexpected result

我有以下功能:

public function already_tweeted($tweet){
        return mysql_num_rows(mysql_query("SELECT * FROM `retweeted` WHERE `tweet`='$tweet'"));
    }

非常簡單。 它檢查一條推文是否已經存在於數據庫中。

該表具有以下記錄:

id  user    tweet
3       You should retweet this too
2       Retweet this

(用戶暫時為空)

這段代碼:

$db_reader = new database_reader;
$already_tweeted = $db_reader->already_tweeted($tweet);
print $tweet . ". Already: ";
var_dump((bool) $already_tweeted);
print "<br>";

提供以下輸出:

You should retweet this too. Already: bool(false) 
Retweet this. Already: bool(true) 

我幾乎被困在這里。 當我運行SELECT * FROM retweeted WHERE tweet =在phpMyAdmin“你應該轉推過”我得到1行回來。

檢查$ tweet中的值是什么

類似的問題

同時更改此行以確保安全

return mysql_num_rows(mysql_query("SELECT * FROM retweeted WHERE tweet ='{$tweet}'"));

return mysql_num_rows(mysql_query("blah-blah")); 是運行查詢的最骯臟的方式。
做一個助手功能來代替這個恐怖。

mysql_num_rows()是對行進行計數的最骯臟的方法,應改用SELECT count(*)

//put this function to your function library
function dbgetvar($query){
  $res = mysql_query($query);
  if (!$res) {
    trigger_error("dbget: ".mysql_error()." in ".$query);
    return FALSE;
  }
  $row = mysql_fetch_row($res);
  if (!$row) return NULL;
  return $row[0];
}
public function already_tweeted($tweet){
  $tweet = mysql_real_escape_string($tweet);
  return dbgetvar("SELECT count(*) FROM `retweeted` WHERE `tweet`='$tweet'"));
}

暫無
暫無

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

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