【问题标题】:php pdo Call to a member function query() on null [duplicate]php pdo 在 null 上调用成员函数 query() [重复]
【发布时间】:2017-02-23 03:06:07
【问题描述】:

// db.php

$db = array();

$db['host'] = '127.0.0.1';
$db['login'] = 'root';
$db['pass'] = '';
$db['name'] = 'edziennik';

$db_conn = new PDO('mysql:host='.$db['host'].';dbname='.$db['name'].';charset=utf8mb4', $db['login'], $db['pass']);

login_system.php

<?php

require_once('cfg/db.php');

function validate_data($l, $p)
{
    $query = "SELECT * FROM e_users WHERE login='"+$l+"' AND password='"+$p+"'";
    $stmt = $db_conn->query($query);
    $row_count = $stmt->rowCount();
    if($row_count===1)
        return true;
    else
        return false;
    return false;
}

错误:在 null 上调用成员函数 query() 添加全局前缀没有帮助。 我浪费了很多时间来修复它,所以我问你。

【问题讨论】:

  • 您需要将 $db_conn 传递给您的 validate_data 函数。
  • global 声明应该有效,你一定犯了一个错误。
  • 另一个问题:PHP 使用. 连接字符串,而不是+。但是您应该使用准备好的语句,而不是将变量连接到查询中。

标签: php pdo login system


【解决方案1】:

$db_conn 不存在于 validate_data 范围内。将其作为参数传递。

<?php

require_once('cfg/db.php');

function validate_data($db_conn, $l, $p)
{
    $query = "SELECT * FROM e_users WHERE login='".$l."' AND password='".$p."'";
    $stmt = $db_conn->query($query);
    $row_count = $stmt->rowCount();
    if($row_count===1)
        return true;
    else
        return false;
    return false;
}

当你调用它时,传入连接。

$check = validate_data($db_conn, $whateverLIs, $whateverPIs);

编辑:-@Bamar 指出的固定连接运算符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-26
    • 2016-05-22
    • 2016-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多