2016-12-11 2 views
1

Я хочу, чтобы добавить данные в моей таблице с хранимой процедурой, но у меня есть эта ошибка:PHP хранимая процедура добавления ошибки

Gönder Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'Teknoloji,V,,1)' at line 1' in C:\xampp\htdocs\berat\isyerikayit.php:142 Stack trace: #0 C:\xampp\htdocs\berat\isyerikayit.php(142): PDO->query('CALL isyerikayi...', 2) #1 {main} thrown in C:\xampp\htdocs\berat\isyerikayit.php on line 142

<?php 
     if (isset($_POST['gonder'])) 
    { 
     $adi = $_POST["adi"]; 
     $calismaturu = $_POST["calismaturu"]; 
     $iscigucu = $_POST["iscigucu"]; 
     $hizmetturu = $_POST["hizmetturu"]; 
     $butce = $_POST["butce"]; 
     if($calismaturu == 'V') 
      { 
       $sorgu= $db->query("CALL isyerikayitV($adi,$calismaturu,$iscigucu,$hizmetturu)",PDO::FETCH_ASSOC); 

       echo '<script>alert("Hizmet Veren Firma Eklendi.");</script>'; 
      } 
     else 
      { 
       $sorgu= $db->query("CALL isyerikayitE($adi,$calismaturu,$butce)",PDO::FETCH_ASSOC); 

       echo '<script>alert("Hizmet Edilen Firma Eklendi.");</script>'; 
      } 


    } 
    ?> 

isyerikayitE() Мои и isyerikayitV процедуры являются 7.

Image 1 Image 2

ответ

0

Кажется, что $iscigucu пуст:

«что соответствует версии сервера MariaDB для корректного синтаксиса использовать вблизи„Teknoloji, V ,, 1)“»

И все ваши строковые переменные отсутствуют кавычки:

Быстрое решение

$iscigucu = empty($_POST["iscigucu"]) ? "''" : "'".$_POST["iscigucu"]."'"; 

для каждого из них.

или

$iscigucu = "'".$iscigucu."'" 

Но правильный способ решения этой проблемы заключается в использовании подготовленных заявлений:

$call = mysqli_prepare($mysqli, 'CALL test_proc(?, ?, ?, ?)'); 
mysqli_stmt_bind_param($call, 'ssss', $adi,$calismaturu,$iscigucu,$hizmetturu); 
mysqli_stmt_execute($call); 

Взгляните: http://php.net/manual/en/mysqli-stmt.bind-param.php

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