php存储过程添加错误

时间:2016-12-11 12:03:06

标签: php mysql stored-procedures

我想用存储过程向我的表添加数据,但是我有这个错误:

  

Gönder   致命错误:带有消息'SQLSTATE [42000]的未捕获异常'PDOException':语法错误或访问冲突:1064 SQL语法中有错误;检查与您的MariaDB服务器版本相对应的手册,以便在C:\ xampp \ htdocs \ berat \ isyerikayit.php的第1行''Teknoloji,V ,, 1)附近使用正确的语法:142堆栈跟踪:#0 C:\ xampp \ htdocs \ berat \ isyerikayit.php(142):PDO->查询('CALL isyerikayi ...',2)#1 {main}在C:\ xampp \ htdocs \ berat \ isyerikayit中抛出。第142行的PHP

 <?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

1 个答案:

答案 0 :(得分: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