【问题标题】:Why can I run a query in phpmyadmin but not in PHP为什么我可以在 phpmyadmin 中运行查询,但不能在 PHP 中运行
【发布时间】:2015-09-16 14:00:25
【问题描述】:

我写了一个这样的脚本:

<?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);
    }
}

?>

【问题讨论】:

  • 你有什么错误吗?
  • @Pat4561,不,我没有收到任何错误
  • @Pat4561,即使拆分查询(删除插入)也不起作用
  • $connect 定义在哪里?
  • @harris,在config.php文件中声明

标签: php mysql mysqli phpmyadmin


【解决方案1】:

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

因此,将 parent::init(); 添加到您的 connect 类构造函数应该可以修复它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-11
    • 1970-01-01
    • 1970-01-01
    • 2018-03-03
    • 2020-04-06
    • 2020-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多