2012-11-28 57 views
0

爲什麼我的代碼是不是在這裏工作,我認爲我做了一些錯誤,但我不能確定它是否有人能發現什麼我已經錯在這裏我會心存感激PHP類工作不

這裏是我的代碼:我在這裏嘗試使用php類在數據庫中插入新行

<?php 
$connection = new PDO('mysql:dbname=master;host=localhost','root','123'); 
/*if($connection) 
{ 
    echo 'Database is connected successfully'; 
} 
else 
    { 
    echo 'please connect to a database'; 
}*/ 
class Topics 
{ 
    public $id; 
    public $title; 
    public $body; 
    public static $table_name = 'topics'; 
    public static $fields = array ('title','body'); 
    private function attributes() 
    { 
     $string = array(); 
     foreach (self::$fields as $field) 
     { 
      if (!empty($field)) { 
       if(is_int($this->$field)) 
       { 
        $string[] = $field." =".$this->$field; 
       } 
       else 
       { 
        $string[] = $field." ="."'".$this->$field."'"; 
       } 

      } 

     } 
     return join(',', $string); 
    } 
    public function add() 
    { 
     global $connection; 
     $sql = 'INSERT INTO'.self::$table_name.'SET'.$this->attributes(); 
     $number_of_affected_rows = $connection->exec($sql); 
     if($number_of_affected_rows >0) 
     { 
      $this->id = $connection->lastInsertId(); 
     } 
     return ($number_of_affected_rows>0) ? $number_of_affected_rows : FALSE; 
    } 
} 
$mohamed = new Topics(); 
$mohamed->title = 'Hello'; 
$mohamed->body = 'Hello world again'; 
return $mohamed->add(); 
?> 
+3

你期待什麼行爲,你看到了什麼?是否有任何錯誤或通知正在輸出?你是否啓用了['error_reporting'](http://php.net/manual/en/function.error-reporting.php)? – Sampson

+0

「不工作」是一個非常寬泛的描述。你能更清楚地說明問題是什麼。 – SDC

+0

你已經在使用PDO了,這很好,但你並沒有逃避你的數據。 PDO提供了一個特別的功能 - 而不是'。「'」。$ this - > $ field。「'」',使用'PDO :: Quote($ this - > $ field)'。 – SDC

回答

0

什麼不正確?無論如何,你的SQL是錯誤的,因爲它需要空格。

'INSERT INTO '.self::$table_name.' SET '.$this->attributes();

而且順便說一句,你也應該逃避你的SQL表和字段名。

+0

感謝您的幫助,我期待着某個轉儲,但我並不認爲這將是轉儲 – Neo