关于php:致命错误:在字符串上调用成员函数…Call to a member function …on string

Fatal error: Call to a member function …on string

本问题已经有最佳答案,请猛点这里访问。

连接在这里

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class connection{

private $hostname ="localhost";
private $username ="root";
private $password ="";
private $database ="idea";
private $conn;

public function __construct(){
    $this->conn = new mysqli($this->hostname, $this->username, $this->password, $this->database)or die("Error Connection To MySQL");
}

public function getConn(){
    return $this->conn;
}
?>

我怀疑这两者之间的联系,只是为了以防万一…它适用于所有其他查询,但谁知道呢。

第二,这里的包袱都是这样的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
    <?php
session_start();

  if ($_SESSION['loggedin'] != 1) {
    header('location: index.php');
  }

    include 'connection.php';
    include 'users.php';
    include 'ideas.php';
    $conn = new connection();
    $user = new users($conn->getConn());
    $idea = new ideas($conn->getConn());
    ?>

倒数第二个问题是我在一个类中的查询

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php

class ideas{

    private $conn;

    public function __construct($db){
        $this->conn = $db;
    }

    public function checkIdea($title){
        $result = $this->conn->query("SELECT * FROM ideas WHERE title = '$title'");
        return $result;
    }
?>

最后,这里是我在主页上调用的功能!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
            if (isset($_POST['addidea'])) {
              $title = mysql_real_escape_string($_POST['title']);
              $idea = mysql_real_escape_string($_POST['idea']);

              $check = $idea->checkIdea($title); // <-- sais this is the error here...

              if ($check->num_rows == 0) {
                echo $idea->getUserId($_SESSION['username']);
              }else{
                echo"Sorry that iDea title is already taken, please use another!";
              }
            }
          ?>

我不知道它为什么这样做,这是什么错误,我以前从来没有遇到过(调用字符串上的成员函数),我使用了相同的查询/布局作为登录等,不知道它为什么这样做,任何答案都值得赞赏。


你正在做:

1
$idea = mysql_real_escape_string($_POST['idea']);

所以现在$IDEA是一个字符串。然后你这样做:

1
$check = $idea->checkIdea($title);

字符串上没有checkIdeam方法。