2015-02-18 5 views
-1
public $id; 
public $post; 
public $postedon; 

public function insert($target_file){ 
    $sql="INSERT INTO post (ID,Post,PostedOn,Picture) VALUES (".$this->id.",".$this->post.",".$this->postedon.",".$target_file.")"; 
    $this->db->execute($sql); 
} 

// нет ошибки, но я не могу вставить значения в базе данныхSQL Insert Синтаксис

+0

сообщение и postedon являются строками нет? Вы не можете вставить как целое число –

+1

. Вы забыли значение '' 'в значениях. – Hockenberry

+1

Ошибка? Это потому, что проверка __error__ отсутствует. У вас есть решение вашей синтаксической ошибки, но ваша настоящая проблема заключается в том, что вы не ищете ошибок и, следовательно, не можете их диагностировать. –

ответ

1

Tty использовать с single quote, потому что вы вставляете значение строки в базе данных, которые необходимо single quote для вставки в базу данных.

$sql="INSERT INTO post (ID,Post,PostedOn,Picture) VALUES (".$this->id.",'".$this->post."','".$this->postedon."','".$target_file."')"; 

Вместо того

$sql="INSERT INTO post (ID,Post,PostedOn,Picture) VALUES (".$this->id.",".$this->post.",".$this->postedon.",".$target_file.")"; 
1

У вас не хватает ' значений

public $id; 
public $post; 
public $postedon; 

public function insert($target_file){ 
    $sql="INSERT INTO post (ID,Post,PostedOn,Picture) VALUES (".$this->id.",'".$this->post."','".$this->postedon."','".$target_file."')"; 
    $this->db->execute($sql); 
} 

И вы делаете одну рискованную вещь, вы инъекционного значения в строку непосредственно, это не безопасно, может кто-то do sql injection, вы можете избежать этого, используя привязку param, прочитайте о SQL-инъекции.

+0

большое спасибо. :) –

2

заменить строку запроса с кодом ниже один раз

$sql="INSERT INTO post (ID,Post,PostedOn,Picture) VALUES ('$this->id','$this->post','$this->postedon','$target_file')"; 
Смежные вопросы