我遇到mysqli_query
的问题。我在单例数据库类调用connect()
和querydb()
中设置了方法,querydb
采用$query
参数我确定没问题,因为我使用了查询来添加数据到phpMyAdmin中的表。这是我的PHP方法,当我尝试将数据添加到register.php类中的表时。
public function register() {
$databaseinst = database:: getinstance();
$conn = $databaseinst->connect();
$query = "INSERT INTO Customer (email_address,firstname,lastname,address_line_1,address_line_2,city,postcode,country,password) VALUES ('$this->email','$this->firstname','$this->secondname','$this->address1','$this->address2','$this->city','$this->postcode','$this->country','$this->password1')";
$numrows = $databaseinst->querydb($query);
if ( false===$numrows ) {
$this->errors[]= mysqli_error($conn);
}
if ($numrows < 1) {
$this->errors[] = "could not process query";
}
if($conn == 0)
{
$this->errors[] = "couldnt connect";
}
if($conn == 1)
{
$this->errors[] = " connected";
}
}
public function showerrors() {
echo "<h3> ERRORS!!</h3>";
echo "<p>" . var_dump($this->errors) . "</p>";
foreach ($this->errors as $key => $value)
{
echo $value . "</br>";
}
}
第二种方法就是如何在错误发生时打印出来。
接下来是我的数据库单例类中的方法,它返回一个实例很好我认为问题是我的mysqli_query()
方法中的querydb()
方法调用只是可以弄清楚它是什么我一直得到一个“不能进程查询“回复。无论如何这里是我使用的单身人士课程,它几乎是我在网上找到的一个编辑版本。
<?php
class database {
private static $instance;
private $dbcon;
private $result;
private $numrows;
private function __construct()
{
}
static function getinstance()
{
if(!self::$instance)
{
self::$instance = new self();
}
return self::$instance;
}
public function connect()
{
$this->dbcon = mysqli_connect('localhost','********','****');
if (!$this->dbcon)
{
return 0;
}
else
{
return 1;
}
}
public function querydb($query)
{
mysqli_select_db($this->dbcon,'theislan_testdatabase');
$this->result = mysqli_query($this->dbcon,$query);
$this->numrows = $this->result->num_rows;
if ($this->numrows < 1)
{
return 0;
}
else
{
return 1;
}
}
}
?>
答案 0 :(得分:0)
您用来连接MySQL的用户是否允许INSERT?换句话说,是MySQL权限导致问题,而不是PHP?尝试使用root用户进行测试以确定是否是这种情况(或检查PHPMyAdmin中的权限)。