Правильный способ узнать, есть ли mysql_num_rows в PHP - PullRequest
2 голосов
/ 14 октября 2011

Поскольку mysql_num_rows возвращает false, если не возвращаются строки, было бы лучше сделать:

$query = mysql_query("SELECT id FROM table WHERE something = 'this'"); 
$result = mysql_num_rows($query);

if ($result) { }

Или я должен сделать:

if ($result >= 1) { }

Ответы [ 5 ]

5 голосов
/ 14 октября 2011

Правильным способом будет использование PDO вместо древних mysql_* функций:

$stmt = $dbh->prepare('SELECT item_id FROM Items WHERE name = :param');
$stmt->bindParam( ':param', $some_name, PDO::PARAM_STR, 127 );
if ( $stmt->execute() )
{
   echo $stmt->rowCount();
   var_dump( $stmt->fetchAll( PDO::FETCH_ASSOC ));
}
2 голосов
/ 14 октября 2011

Правильный

$result = mysql_query("SELECT id FROM table WHERE something = 'this'"); 
if (mysql_num_rows($result)){
    //there are results
}

однако вы могли бы сделать это проще, не проверяя

$result = mysql_query("SELECT id FROM table WHERE something = 'this'"); 
while($row = mysql_fetch_assoc($result))
    //there are results
}

пожалуйста. Дайте вашим переменным собственные имена

1 голос
/ 14 октября 2011

Он не возвращает false, если строки не возвращаются, он возвращает false в случае ошибки. Вы можете справиться с этим следующим образом:

 if ($result === false) {
    /* An error occurred - do something */
 } else {
    /* $result is set to some number >= 0 */
 }
0 голосов
/ 21 сентября 2016

Счетчик вернет значение, и вы не можете считать, а затем вызвать mysql_num_rows.Это либо один из других.

Вы можете сделать

$isExist = mysql_query("Select count(id) from ..."); 
$r = mysql_fetch_array($isExist);
if($r['COUNT(id)'] > 0){
//item exists
}else{
//item doesnt exist
}

Если в качестве альтернативы вы можете сделать запрос как:

$isexist = mysql_query("select * from wcddl_filehosts where downloadid = '".$download[id]."'");
if(mysql_num_rows($isExists)>0){
//we have items
}else{
//we dont have items
}
0 голосов
/ 14 октября 2011

Честно говоря, я думаю, что

$query = mysql_query("SELECT id FROM table WHERE something = 'this'"); 
if (mysql_num_rows($query)!==FALSE){
    //there are results
}

более уместно.

...