Я набрал класс, который он расширил из класса PDO и использовал его в моем проекте. Но в методе вставки получите ошибку.PHP PDO Вставить метод класса не работает
На последующих кодов для вставки в таблицу:
public function insert($table, $data)
{
ksort($data);
$field_Names = implode(', ',array_keys($data));
$field_Values = ':'.implode(', :',array_keys($data));
$sth = $this->prepare("$table ($field_Names) VALUES($field_Values)");
foreach ($data as $key => $value) {
$sth->bindValue(":$key",$value);
}
$this->_numrows = $sth->rowCount();
if($this->_numrows > 0)
return 1;
else
return 0;
}
И используя подобный проект:
return $this->db->insert("INSERT INTO kategoriler(tr_adi,en_adi,sira,isHeader,parentID,url) VALUES(:tr_adi,:en_adi,:sira,:isHeader,:parentID,:url)",
array(
"tr_adi" => $tr_adi,
"en_adi" => $en_adi,
"sira" => $sira,
"isHeader" => 0,
"parentID" => $parentID,
"url" => $url
));
Но не работает. Я положил функцию print_r с помощью $ sth-> errorInfo() и получил ошибку:
Array
(
[0] => 42000
[1] => 1064
[2] => You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(en_adi, isHeader, parentID, sira, tr_adi, url) VALUES('Blue Sky Bar Lounge', '' at line 1
)
В пути вы будете в конечном итоге с 'подготовить (" INSERT INTO таблицы (столбец, столбец, столбец) VALUES (вал, знач, знач) VALUES (знач , val, val) ")', потому что вы объявили VALUES в переданном параметре и в функции подготовки –
SQL и PHP - разные языки. Используйте 'var_dump (" $ table ($ field_Names) VALUES ($ field_Values) ")', чтобы определить, какой запрос вы пытаетесь запустить. –
PHP не имеет 'E_DOESNT_WORK' –