Php 如何使用MySQL检查页面是否为空?

Php 如何使用MySQL检查页面是否为空?,php,mysql,content-management-system,blogs,Php,Mysql,Content Management System,Blogs,我再次回来,尝试创建一个“自定义”博客系统。或者人们称之为CMS。这是我当前的代码: <?php //include stuff here $pid = $_GET['pageid']; $data = mysql_query("SELECT * FROM entries WHERE id='$pid'") or die("MySQL died."); mysql_real_escape_string($pid); while($info = mysql_fetch_array( $dat

我再次回来,尝试创建一个“自定义”博客系统。或者人们称之为CMS。这是我当前的代码:

<?php
//include stuff here
$pid = $_GET['pageid'];
$data = mysql_query("SELECT * FROM entries WHERE id='$pid'") or die("MySQL died.");
mysql_real_escape_string($pid);
while($info = mysql_fetch_array( $data )) 
{
if (!empty($info)) {
echo $info['data'];
}
else {
echo 'This page no existo.';
}
}
?>

  • 。它们不再得到维护。看到了吗?相反,学习,并使用,或-将帮助您决定哪一个。如果您选择PDO

  • 在查询中使用数据之前,必须先转义数据

  • 是判断查询是否有任何结果的最佳方法

  • 如果您只需要查询中的行,则不需要遍历所有结果

  • 如果
    $\u GET['pageid']
    始终是一个数字,您应该减少SQL注入的机会


  • 我想试试这样的

    <?php
    
            $pid = $_GET['pageid'];
            mysql_real_escape_string($pid);
    
            $data = mysql_query("SELECT * FROM entries WHERE id='$pid'") or die("MySQL died.");
    
            $num_rows = mysql_num_rows($data);
    
            if ($num_rows == NULL) {
    
                  echo 'This page no existo.';
    
            } else {
    
                      $info = mysql_fetch_array( $data );
                      echo $info['data'];
            }
    ?>
    

    首先,让我们从您来这里的目的开始:

    如果记录不存在,
    mysql\u fetch\u array($data)
    将返回
    false
    ,因此,它甚至不再在
    块中输入
    。所以,你的逻辑是错误的


    其次,您使用的
    mysql\u real\u escape\u string()
    错误。您需要在执行SQL查询之前调用它,并且需要在将注入SQL查询的变量中捕获其输出:

    $pid = mysql_real_escape_string($pid);
    $data = mysql_query("SELECT * FROM entries WHERE id='$pid'") or die("MySQL died.");
    

    第三,您可能想考虑放弃代码> MySQL**/Cudio>函数,因为该库处于被弃用的过程中,因为它提供了降低SQL注入能力的能力差。考虑使用改进的库函数,或者.

    尝试使用您知道存在的数组中的索引,例如:空($Fiel[[ ID ] ])使PaGID=1“注释存在”。也考虑或使用更容易使用。Ow,我刚刚发现我有一个SQL注入URLN。在代码中。你能在$info上做一个var\u转储吗?
    mysql\u real\u escape\u字符串
    仍然没有意义。我的答案使用了
    mysql\u num\u rows
    我知道。我稍后会把它改成PDO。我几分钟后试试这个。它奏效了!!现在要将代码转换为PDO.Updated,我没有插入
    $info=mysql\u fetch\u数组($data)
    
    <?php
    
            $pid = $_GET['pageid'];
            mysql_real_escape_string($pid);
    
            $data = mysql_query("SELECT * FROM entries WHERE id='$pid'") or die("MySQL died.");
    
            $num_rows = mysql_num_rows($data);
    
            if ($num_rows == NULL) {
    
                  echo 'This page no existo.';
    
            } else {
    
                      $info = mysql_fetch_array( $data );
                      echo $info['data'];
            }
    ?>
    
    $pid = mysql_real_escape_string($pid);
    $data = mysql_query("SELECT * FROM entries WHERE id='$pid'") or die("MySQL died.");