2012-03-11 126 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

相關問題