Php 返回0个mysqli\u受影响的行和mysqli\u插入\u id

Php 返回0个mysqli\u受影响的行和mysqli\u插入\u id,php,function,mysqli,Php,Function,Mysqli,我使用函数db_connect和db_query(),但我有一个问题:我如何使用mysqli_insert_id()和mysqli_impact_rows(),因为该值返回0 function db_connect(){ static $connection; require_once __DIR__ . '/cfconfig.php'; $connection = mysqli_connect(DB_SERVER, DB_USER, DB_PASSWORD,

我使用函数db_connect和db_query(),但我有一个问题:我如何使用mysqli_insert_id()和mysqli_impact_rows(),因为该值返回0

function db_connect(){
    static $connection;
        require_once __DIR__ . '/cfconfig.php'; 
    $connection = mysqli_connect(DB_SERVER, DB_USER, DB_PASSWORD, DB_DATABASE);
    $connection->set_charset('utf8');

    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }
    return $connection;
}

function db_query($query) {
    $connection =  db_connect();
    $result = mysqli_query($connection,$query);
    return $result;
}
例如:

db_query("INSERT INTO  ....
在此之后:

$afectrows = mysqli_affected_rows(db_connect());
$insertid = mysqli_insert_id(db_connect());

值返回0

这是因为您的函数,它会在每次调用时创建新的连接,尽管存在一些cargo cult静态变量

要使它工作,你必须使你的连接真正静态

function db_connect(){
    static $connection;
    if (!$connection) {
        require_once __DIR__ . '/cfconfig.php'; 
        mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
        $connection = mysqli_connect(DB_SERVER, DB_USER, DB_PASSWORD, DB_DATABASE);
        $connection->set_charset('utf8');
    }
    return $connection;
}
现在您可以获得插入id了

$id = db_connect()->insert_id;

这是因为您的函数,它在每次调用时都会创建新的连接,尽管存在一些cargo cult静态变量

要使它工作,你必须使你的连接真正静态

function db_connect(){
    static $connection;
    if (!$connection) {
        require_once __DIR__ . '/cfconfig.php'; 
        mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
        $connection = mysqli_connect(DB_SERVER, DB_USER, DB_PASSWORD, DB_DATABASE);
        $connection->set_charset('utf8');
    }
    return $connection;
}
现在您可以获得插入id了

$id = db_connect()->insert_id;

是否已成功插入记录?是否包含自动递增ID?是否成功插入记录?它是否包含自动递增的ID?