我想用存储过程向我的表添加数据,但是我有这个错误:
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。
答案 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);