【问题标题】:Warning function mysql_query() and mysql_fetch_array() using TCPDF使用 TCPDF 的警告函数 mysql_query() 和 mysql_fetch_array()
【发布时间】:2014-04-09 03:45:21
【问题描述】:

我正在尝试从 mysql 打印数据但收到以下错误:

Warning: mysql_query() expects parameter 1 to be string, resource given in ..

Warning: mysql_fetch_array() expects parameter 1 to be resource, null given in ..

TCPDF ERROR: Some data has already been output, can't send PDF file

我已从以下链接中学习,但仍然收到警告:

这是代码:

    $con=mysql_connect('localhost','root','','bkd_rev');
    $sql = 'select * from tbl';                       
    $result = mysql_query($con,$sql);

    if($result === FALSE) {
        die(mysql_error());
    }

    while($row = mysql_fetch_array($result))
    {
                    $id       = $row['id'];
                    $nam      = $row['name'];                       
        $tbl    .= '<tr> 
                <td>'.$id.'</td><td>'.$nam.'</td><td>
                </tr>';
    }

【问题讨论】:

  • 试试这个 $result = mysql_query($sql);
  • 用这个$con=mysql_connect('localhost','root','bkd_rev');代替$con=mysql_connect('localhost','root','','bkd_rev');...空白值是干什么用的??
  • @NishantSolanki 那将是他的密码所在,他明智地删除了我在想的地方。
  • @DigitalChris 是他的数据库密码.. 比bkd_rev 代表什么??
  • @NishantSolanki 既然你提到了它,你是对的。他的问题是他使用 mysql_connect 就好像它是mysqli_connect,无论如何他都应该使用它。第4个参数是数据库名。

标签: php mysql warnings tcpdf


【解决方案1】:

mysql_query 的正确语法与您的相反。来自文档

mixed mysql_query ( string $query [, resource $link_identifier = NULL ] )

所以你需要改成

$result = mysql_query($sql,$con);

如果只使用数据库连接,则不需要连接链接,因此可能不会使用它

$result = mysql_query($sql);

您可能需要在连接后选择您的数据库

bool mysql_select_db ( string $database_name [, resource $link_identifier = NULL ] )

作为旁注,我建议您切换到 PDOmysqli,因为 mysql_* api 已被弃用,很快将不再维护

【讨论】:

  • 这个怎么样? ideone.com/UK1npN 但 tcpdf 文件本身会显示 Noteded 和 Warning。
  • @adrian 我应该在那里看到什么?这似乎是与您的实际问题无关的另一个错误。如果答案是正确的,您应该将此答案标记为正确。如果您在解决此问题后有新问题,则应针对您的新场景提出新问题。
  • 对不起,我对这些代码很着迷。但是你对mysqli_* 的建议真的很有帮助,谢谢它现在有效。
【解决方案2】:

mysql_query()中的参数顺序问题。

$con=mysqli_connect('localhost','root','','bkd_rev');
$sql = 'select * from tbl';                       
$result = mysql_query($sql);

如果你想传递连接对象,那么,

$result = mysql_query($sql,$con);

【讨论】:

    【解决方案3】:

    试试这个...

    $con=mysql_connect('localhost','root','');
    mysql_select_db('bkd_rev',$con);
    $sql = 'select * from tbl';                       
    $result = mysql_query($sql);
    
    if(!$result) {
        die(mysql_error());
    }
    
    while($row = mysql_fetch_array($result))
    {
                    $id       = $row['id'];
                    $nam      = $row['name'];                       
        $tbl    .= '<tr> 
                <td>'.$id.'</td><td>'.$nam.'</td><td>
                </tr>';
    }
    

    【讨论】:

      【解决方案4】:

      第一个参数应该是它假设的查询

      $result = mysql_query($sql,$con);
      

      【讨论】:

        【解决方案5】:

        停止使用 mysql_ 方法,它们已被弃用且非常不安全。

        改为使用mysqli_,你应该学习如何使用它而不是试图继续学习mysql_方法。

        请看这里: http://uk1.php.net/mysqli

        【讨论】:

          猜你喜欢
          • 2013-02-23
          • 2014-11-22
          • 1970-01-01
          • 1970-01-01
          • 2013-12-08
          • 1970-01-01
          • 1970-01-01
          • 2013-06-19
          • 1970-01-01
          相关资源
          最近更新 更多