2013-12-07 8 views
0

Я новичок в php и работает над классом pdo crud. Моя функция вставки сама по себе работает, но я пытаюсь использовать одну функцию для вставки и обновления. Я исследовал и увидел, что вы можете использовать ON DUPLICATE KEY UPDATE, чтобы сделать это, но когда я добавлю его в свою функцию, он не работает.ON DUPLICATE KEY UPDATE в публичной функции php не работает

Вот мой оригинальный INSERT, который работает;

//INSERT 
public function insert($product_name,$color,$description,$used_for){ 
    $query="INSERT INTO makeup SET product_name='$product_name', color='$color', description='$description', used_for='$used_for'"; 
    $result= $this->mysqli->query($query) or die(mysqli_connect_errno()."product cannot inserted"); 

    if($result){ 
     header('location:read.php');  
    } 
} 

и вот один с добавленным дублированием KEY UPDATE (не работает) без сообщений об ошибках, пункты просто не обновлять или вставлять

//INSERT and UPDATE 
public function insert($product_name,$color,$description,$used_for){ 
    $query="INSERT INTO makeup SET product_name='$product_name', color='$color', description='$description', used_for='$used_for' 
    ON DUPLICATE KEY UPDATE makeup SET product_name='$product_name', color='$color', description='$description', used_for='$used_for'"; 
    $result= $this->mysqli->query($query) or die(mysqli_connect_errno()."product cannot inserted"); 

    if($result){ 
     header('location:read.php');  
    } 
} 

и вызывается с помощью:

include('Crud_class.php'); 
if(isset($_REQUEST['submit'])){ 
    $obj=new Crud("localhost","root","password","dbname"); 
extract($_REQUEST); 
$obj->insert($product_name,$color,$description,$used_for); 

}

+0

Что не работает? Есть ли сообщения об ошибках? – Mike

+0

У вас также есть синтаксическая ошибка в оригинальной версии, поэтому нет возможности работать. – Mike

+0

Исправлена ​​ошибка синтаксиса при копировании кода здесь нет в исходном коде – meztli

ответ

1

Ошибка синтаксиса. Там нет дублирования KEY UPDATE имя_таблицы SET использовать вместо

INSERT INTO makeup SET product_name='$product_name', color='$color', description='$description', used_for='$used_for' 
    ON DUPLICATE KEY UPDATE product_name='$product_name', color='$color', description='$description', used_for='$used_for' 
+0

теперь функция выглядит так: public function insert ($ product_name, $ color, $ description , $ used_for) { \t \t $ query = "INSERT INTO makeup SET product_name = '$ product_name', color = '$ color', description = '$ description', used_for = '$ used_for' ON DUPLICATE KEY UPDATE product_name = '$ product_name', color = '$ color', description = '$ description', used_for = '$ used_for' "; \t \t $ result = $ this-> mysqli-> query ($ query) или die (mysqli_connect_errno(). "Продукт не может вставлен"); \t \t \t если ($ результат) { \t \t \t заголовок ('место: read.php'); \t \t \t} \t} Но работает только часть Вставки: S – meztli

Смежные вопросы