0

我正在开发一个简单的条件,仅当记录集中的总行数大于1. HTML 内容未显示,最佳条件选项是什么?

mysql_select_db($database_connection, $connection);
$query_user = sprintf("SELECT * FROM users WHERE id = %s", GetSQLValueString($colname_user, "int"));
$user = mysql_query($query_user, $connection) or die(mysql_error());
$row_user = mysql_fetch_assoc($user);
$totalRows_user = mysql_num_rows($user);

<?php
if ($totalRows_user > 1) {
    ?>
 <a href="excluiru.php?id=<?php echo $row_user['id']; ?>">
<img src="imagens/delete.png" alt="Remover" onClick="return confirm('Do you really want to delete this User?');" /></a>Delete User
      <?php 
    } ?>

更新:我发现它mysql_num_rows($user);总是给出零值。有没有别的计算方法?

我发现并解决了问题:D

<?php
$isExist = mysql_query("select COUNT(id) from users");
$r = mysql_fetch_array($isExist);
if($r['COUNT(id)'] > 1){
    ?>

我不应该使用 totalrows 而是 fetch_array

4

3 回答 3

1

因为会有 1 条记录,所以它永远不会大于 1。

if ($totalRows_user > 1) 

应该

if ($totalRows_user == 1) 

任何带有调试功能的东西,一旦工作就可以删除

$colname_user = 1; // debug

$db=new PDO("mysql:host=localhost;dbname=test;","root","");
$ami = $db->prepare('SELECT count(*),id FROM users WHERE id = :id');
$ami->bindParam(':id', $colname_user, PDO::PARAM_INT);
$ami->execute();

print_r($ami->errorInfo()); // debug

$totalRows_user = $ami->fetchColumn();
$result = $ami->fetch(PDO::FETCH_ASSOC);
while($row_user = $ami->fetch(PDO::FETCH_ASSOC)) {

    print_r($row_user); // debug

    }

<?php
if ($totalRows_user == 1) {
    ?>
 <a href="excluiru.php?id=<?php echo $row_user['id']; ?>">
<img src="imagens/delete.png" alt="Remover" onClick="return confirm('Do you really want to delete this User?');" /></a>Delete User
      <?php 
    } ?>

http://www.php.net/manual/en/pdo.prepared-statements.php

于 2013-06-21T20:50:44.913 回答
1

或者

if ($totalRows_user >= 1)
于 2013-06-21T20:56:58.053 回答
0

@emilio-gort 和 @amigura 说得对,但是应该提到 PHP 5.5(刚刚发布)弃用了 MySQL 扩展。您应该改用 MySQLI 或 PDO,它们都提供适当的清理,这应该照顾 @nick-r 提到的 Bobby Tables。

于 2013-06-21T21:00:11.080 回答