【问题标题】:Why isn't my PHP working when I try to count the number of rows in a table?当我尝试计算表中的行数时,为什么我的 PHP 不工作?
【发布时间】:2014-06-27 12:44:46
【问题描述】:

为什么这不起作用?

mysql_select_db('a2943462_Pages');
$num_rows = mysql_query("SELECT COUNT(*) FROM PagesInfo");
echo $num_rows;
mysql_query("INSERT INTO `a2943462_Pages`.`PagesInfo`(`ID`, `Title`, `Video`, `Posted`) VALUES ('".$num_rows."', '".$Title."', '".$Embed."', '".$name."')");
printf("Last inserted record has id %d\n", mysql_insert_id());

因为它现在回响: 资源 ID #9

但我认为它会回显 4,因为我在表格中有 3 行

【问题讨论】:

  • 为什么要插入 $num_rows?这听起来像是一场等待发生的事故。
  • mysql_* 函数已弃用,您的代码容易受到 sql 注入的影响
  • 这不是骗子。如果是的话,它有更好的答案......

标签: php mysql sql


【解决方案1】:

改变这个:

$num_rows = mysql_query("SELECT COUNT(*) FROM PagesInfo");

到这里:

$num_rows = mysql_result(mysql_query("SELECT COUNT(*) FROM PagesInfo"), 0);

【讨论】:

  • 这是我唯一顺利完成工作的答案,所有其他人感谢您的快速响应,我真的很感激。
【解决方案2】:

这是 PHP 方法:

$sql="SELECT * FROM pages_info";
$result = mysql_query($sql, $con) or die (echo "$sql" );
$rows = mysql_num_rows($result);

【讨论】:

  • 虽然这不会有效,因为 mysql 数据库会将表中的所有内容发送到 php 脚本,这是浪费资源......最好只计算数据库中的行并发送php 脚本的值
  • 这是脏代码的一个很好的答案。用户包含了脚本的 PHP 选项,所以我想我会在 PHP 中提供解决方案。
  • 您可以随时对收到的每个变量进行智能转义。
【解决方案3】:

你应该做两个查询:

先查询你要显示的内容:

SELECT SQL_CALC_FOUND_ROWS * FROM PagesInfo

第二个查询以获取返回的行数:

SELECT FOUND_ROWS()

在您的插入中返回的行数

php中的查询是

$rows = mysql_query("SELECT SQL_CALC_FOUND_ROWS * FROM PagesInfo");
$rs = mysql_query("SELECT FOUND_ROWS()"); 
$r = mysql_fetch_row($rs); 
mysql_free_result($rs); 
$row_num = $r[0]; 

【讨论】:

  • 我必须将查询放在一个变量中还是只放在第二个变量中? ?如果我这样做,我怎样才能在找到的值上加 1?只需 $num_rows = mysql_query("SELECT FOUND_ROWS()")++;
  • 您必须将结果作为普通查询放入第二个查询中,您将获得行数,它将返回一个包含一个字段的寄存器,您可以使用一些别名进行访问
  • $rs = mysql_query("SELECT FOUND_ROWS()"); $r = mysql_fetch_row($rs); mysql_free_result($rs); $row_num = $r[0];
猜你喜欢
  • 2012-03-10
  • 1970-01-01
  • 1970-01-01
  • 2018-02-10
  • 2018-06-29
  • 2021-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多