我有一个项目,我必须在PHP中使用ajax。我想将成员注册到数据库。反馈是,但是数据库保持空白。花了太多时间。这是我的表单和Ajax代码:
<div class="panel-body">
<script>
function kayit(){
var bilgiler = $("#kayitformu").serialize();
$.ajax({
type : "POST",
data : bilgiler,
url : "kayit.php",
success: function(kayitol) {
if($.trim(kayitol) == "bos") {
sweetAlert('Hata','Boş alan bırakmayınız','error');
} else if ($.trim(kayitol) == "var") {
sweetAlert('Hata','Bu e posta zaten kayıtlı','error');
} else if ($.trim(kayitol)=="ok") {
sweetAlert('ok','Kayıt Başarılı','success');
} else if ($.trim(kayitol)=="hata") {
sweetAlert('Hata','Sistem Kaynaklı Hata Var','error');
}
}
});
}
</script>
<form action="" id="kayitformu" onsubmit="return false;" method="POST">
<fieldset>
<div class="form-group">
<input type="text" name="adsoyad" placeholder="Enter name" class="form-control">
</div>
<div class="form-group">
<input type="text" name="eposta" placeholder="Email" class="form-control">
</div>
<div class="form-group">
<input type="password" name="sifre" placeholder="Password" class="form-control">
</div>
<div class="form-group">
<input type="submit" onclick="kayit();" name="Gonder" class="btn btn-primary" >
</div>
</fieldset>
</form>
</div>
</div>
这是我的sql代码:
<?php
require 'baglan.php';
if($_POST) {
$ad= $_POST["adsoyad"];
$eposta = $_POST["eposta"];
$sifre = $_POST["sifre"];
$sifrele = sha1(md5($sifre));
if(!$ad || !$eposta || !$sifre) {
echo "bos";
} else {
$varmi = $db->prepare("SELECT eposta FROM uyeler WHERE eposta =:e");
$varmi->execute(array(':e'=>$eposta));
if($varmi->rowCount()) {
echo "var";
} else {
$kayit = $db->prepare("INSERT INTO uyeler SET
adsoyad=:a,
eposta =:e,
sifre =:s
");
$kayit->execute([':a'=>$ad,':e'=>$eposta,':s'=>$sifrele]);
if ($kayit) {
echo "ok";
} else {
echo "hata";
}
}
}
}
?>
在ajax代码中,我将信息转发到php文件,但是现在我不明白为什么数据库没有得到记录?您能解释一下错误在哪里吗?
答案 0 :(得分:0)
问题是您为mysql INSERT
使用了错误的语法。您正在将UPDATE
语句与INSERT
查询混合在一起。应该是:
$kayit = $db->prepare(
"INSERT INTO
`uyeler`
(`adsoyad`, `eposta`, `sifre`)
VALUES
(:a, :e, :s)");
请参阅文档中的示例:https://dev.mysql.com/doc/refman/8.0/en/insert.html