【问题标题】:php stored procedure adding errorphp存储过程添加错误
【发布时间】:2017-04-26 10:31:37
【问题描述】:

我想使用存储过程将数据添加到我的表中,但出现此错误:

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

【问题讨论】:

    标签: php mysql stored-procedures


    【解决方案1】:

    $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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-01
      相关资源
      最近更新 更多