我编写了一个如下所示的脚本:
<?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/