2012-03-11 127 views
0

我遇到了mysqli_query问题。我有一个单独的数据库类调用connect()querydb(),,querydb需要一个$query参数,我敢肯定是罚款,因为我使用查询将数据添加到我的表在phpMyAdmin中的方法。这里是我的PHP方法,当我尝试将数据添加到我的register.php类中的表中。myslqli_query()不会将数据插入到我的数据库中

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>"; 
     } 
    } 

第二种方法就是如何在发生错误时将其打印出来。 接下来是我的数据库singleton类的方法返回一个实例罚款我认为问题是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

尝试echo'$ query',确保它有一个有效的查询。 – Jon 2012-03-11 20:17:22

+1

请停止使用古老的'mysql_ *'函数并学习如何使用[PDO](http://php.net/pdo)。哦..并且[有些事情你应该知道关于单身人士](http://www.youtube.com/watch?v=-FRm3VPhseI)。 – 2012-03-11 20:25:20

+0

查询是好的,我用它在myphpadmin,你可以只是运行查询,它的工作 – eoin 2012-03-11 20:54:54

回答

0

您用来连接MySQL的用户是否允许INSERT?换句话说,是MySQL导致问题的权限,而不是PHP?尝试使用root用户进行测试以确定是否是这种情况(或者在PHPMyAdmin中检查权限)。

+0

欢呼,虐待尝试检查权限,所以 – eoin 2012-03-11 20:26:30

+0

不知道如何完全做到这一点 – eoin 2012-03-11 20:44:51

+0

在phpMyAdmin,你应该能够看到一个叫'特权'的链接。点击它,然后点击编辑你用来连接数据库的用户。假设用户没有全局特权,请在“特定于数据库的特权”下检查,并说明用户具有INSERT,UPDATE,DELETE权限或ALL。 – fred2 2012-03-11 20:58:21

相关问题