【问题标题】:Php fatal error when truncating截断时的Php致命错误
【发布时间】:2018-11-13 01:15:13
【问题描述】:

我正在尝试截断数据库中的表。我得到的错误是

PHP 致命错误:未捕获的错误:调用 /var/www/html/rubynetwork_servers/truncate.php:4\n 堆栈跟踪:\n#0 {main}\n 中布尔值的成员函数 query() /var/www/html/rubynetwork_servers/truncate.php 在第 4 行

我已经尝试了各种方法,包括在 stackoverflow 上寻找答案。我的代码是

<?php 
    error_reporting(E_ERROR | E_PARSE);
    $con = mysqli_connect("localhost","root","-snip-","ruby");
    $sql = "truncate table ruby_servers";
    if ($con->query($sql) === TRUE) {
    } else {
         echo "Error: " . $sql . "<br>" . $conn->error;
    }
?>

【问题讨论】:

  • 连接失败,所以$con为假。
  • 我的连接正常吗?
  • 做一个var_dump($con); - 我敢打赌这是假的。
  • 嗯。说是假的......但它可以工作,因为在其他设置中它可以工作

标签: php html mysql mysqli


【解决方案1】:

问题在于您正在编程的模式。正确的工作代码是:

<?
    error_reporting(E_ERROR | E_PARSE);
    $mysqli = new mysqli("localhost", "username", "password", "databasename");
    $sql= "TRUNCATE TABLE tbl_name";
    //$mysqli->query($sql)                // this will execute query
                                    // Your checking conditions here.
    if ($mysqli->query($sql) === TRUE) {
    } else {
         echo "Error: " . $sql . "<br>" . $mysqli->error;
    }
    $mysqli->close();
?>

请注意我使用“新”的方式。它是面向对象的编程方式所要求的。

您正在将面向对象的方式应用于程序模式的代码。

'->' 只能在你有一个“新”对象时使用。所以,使用新的。

使用后别忘了关闭连接。

如果你仍然难以理解,那么你仍然可以使用 mysqli 扩展的程序模式。请不要在新项目中使用旧的 mysql 扩展。

参考: http://php.net/manual/en/mysqli.quickstart.dual-interface.php

【讨论】:

  • PHP error_log 对我给定代码的描述是什么?有一件事仍然存在,您必须使用“新”进行面向对象编程。
猜你喜欢
  • 2011-09-20
  • 1970-01-01
  • 2011-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-16
相关资源
最近更新 更多