php - 为什么我可以在 phpmyadmin 中运行查询,但不能在 PHP 中运行查询

标签 php mysql mysqli phpmyadmin

我编写了一个如下所示的脚本:

<?php
$admin = new stdClass();
$admin->name = "admin";
$admin->passwd = hash("sha256", "*********");
$admin->email = "you@yourdomain.com";

$script = "
    CREATE TABLE IF NOT EXISTS `users` 
    ( 
        `id` INT(11) PRIMARY KEY AUTO_INCREMENT NOT NULL, 
        `username` VARCHAR(255) UNIQUE NOT NULL, 
        `passwd` VARCHAR(255) NOT NULL, 
        `email` VARCHAR(255) UNIQUE NOT NULL, 
        `user_level` VARCHAR(255) NOT NULL 
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1; 

    INSERT IGNORE INTO `users` (`username`, `passwd`, `email`, `user_level`) 
    VALUES ('{$admin->name}', '{$admin->passwd}', '{$admin->email}', 'admin');
    ";
print_r( $script );
print ("<br /><br /><br />");
$connect->multi_query($script) ? print "tr" : print "fa";
?>

当我在 phpmyadmin 中运行它时,它执行得很好,但是当从我的浏览器运行时,它根本不起作用,这里可能出了什么问题?

查询

    CREATE TABLE IF NOT EXISTS `users` 
    ( 
        `id` INT(11) PRIMARY KEY AUTO_INCREMENT NOT NULL, 
        `username` VARCHAR(255) UNIQUE NOT NULL, 
        `passwd` VARCHAR(255) NOT NULL, 
        `email` VARCHAR(255) UNIQUE NOT NULL, 
        `user_level` VARCHAR(255) NOT NULL 
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1; 

    INSERT IGNORE INTO `users` (`username`, `passwd`, `email`, `user_level`) 
    VALUES ('admin', 'password from hash', 'you@yourdomain.com', 'admin');

$connect 声明

$connect = new connect("localhost", "********", "********", "********");

connect 类的声明

<?php

class connect extends mysqli
{
    public function __construct($host = null, $username = null, $passwd = null, $dbname = null)
    {
        $host       = $host     == null ? ini_get("mysqli.default_host")    : $host;
        $username   = $username == null ? ini_get("mysqli.default_user")    : $username;
        $passwd     = $passwd   == null ? ini_get("mysqli.default_pw")      : $passwd;
        $dbname     = $dbname   == null ? ""                                : $dbname;
        return $this->real_connect($host, $username, $passwd, $dbname);
    }
}

?>

最佳答案

在调用 mysqli::real_connect 之前,您需要初始化 MySQLi 对象

因此,将 parent::init(); 添加到 connect 类构造函数中应该可以解决此问题。

关于php - 为什么我可以在 phpmyadmin 中运行查询,但不能在 PHP 中运行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32610779/

相关文章:

php - 无法将 Latin1 转换为 utf-8?不是编码员

mysql - 想知道如何构建这个用户和服务器 ID 数据库

javascript - 如何使用 JavaScript 或 PHP 传回唯一 ID?

mysql - 如何使用 MySql 在 NodeJS 中获取没有列名的数据

php - 我如何设置默认默认图像 (no_pic.gif) php?

php - 如何从 PHP 中的全名的名字/姓氏的分割版本中获取一个人的用户 ID?

php - PHP 和 MYSQL 中的三级嵌套数组

php - 为什么连接到 mySQL 数据库和查询不起作用?

php - 从查询中存储值 PHP MYSQL

php - DOMDocument 中的 nodeValue 在 PHP 中返回奇怪的字符