你好我试图设置自定义错误。我有一张表格。 post.php的动作我不希望表格去post.php错误我需要在同一页面设置错误。我试过了
$sql = "
INSERT INTO yazilar (baslik, spot, spot_kisa, spot_resim, spot_resim_isim, icerik, kategori, tiklanma, eklemetarihi)
VALUES
('$_POST[baslik]','$_POST[spot]','$_POST[spot_kisa]','$_POST[spot_resim]','$_POST[spot_resim_isim]','$_POST[icerik]','$_POST[kategori]','$_POST[tiklanma]','$_POST[tarih]')
";
$sonuc = mysql_query($sql);
<?
if ($sonuc) {
echo ("<p class='msg done'>Yeni icerik basarili bir sekilde eklendi.</p>");
}
if(! $sonuc) {
echo ("<p class='msg warning'>Ekleme basarisiz oldu.</p>");
}
?>
这总是显示Yeni icerik basarili bir sekilde eklendi。
这个。
帮我plx
答案 0 :(得分:2)
您的查询是有效的,并且它会成功插入数据,因此MySql_Query()
会返回true,而这会依次“触发”第一个if
,但不会触发第二个{{1}}。
请参阅return values of MySql_Query的文档。
如果你想要验证,你必须写它。
另外:你的两个if语句可以重构成一个。查看if/else语法
答案 1 :(得分:1)
如果您尝试在提交表单中显示错误,只需将您的post.php代码移到您的表单页面并按照以下条件进行调整:
<?php
if(isset($_POST['baslik'])) {
$sql = "
INSERT INTO yazilar (baslik, spot, spot_kisa, spot_resim, spot_resim_isim, icerik, kategori, tiklanma, eklemetarihi)
VALUES
('$_POST[baslik]','$_POST[spot]','$_POST[spot_kisa]','$_POST[spot_resim]','$_POST[spot_resim_isim]','$_POST[icerik]','$_POST[kategori]','$_POST[tiklanma]','$_POST[tarih]')
";
$sonuc = mysql_query($sql);
if ($sonuc) {
echo ("<p class='msg done'>Yeni icerik basarili bir sekilde eklendi.</p>");
exit;
}
else {
$error = "<p class='msg warning'>Ekleme basarisiz oldu.</p>";
}
}
?>
// form code here
<?php if(isset($error)) { echo $error; } ?>
// around where you'd like the error to display
现在,如果操作成功,则成功消息将显示没有其他内容,否则将使用您在其中定位的错误消息重新显示该表单。另外,请参阅soulmerge对SQL注入的评论,这是一个很容易避免的严重安全风险。
答案 2 :(得分:0)
试试这个
$sonuc = mysql_query($sql);
<?php
if($sonuc !== false){
echo ("<p class='msg done'>Yeni icerik basarili bir sekilde eklendi.</p>");
} else {
echo ("<p class='msg warning'>Ekleme basarisiz oldu.</p>");
}
?>
编辑:当您需要验证而不是检查查询是否有效时,请检查此http://www.php-mysql-tutorial.com/wikis/php-tutorial/form-validation-using-php.aspx
答案 3 :(得分:0)
替换
$sonuc = mysql_query($sql);
用这个
$sonuc = mysql_query($sql) or die(mysql_error());
有任何错误吗?
您的表格字段是否可能与您插入的表格字段不匹配?
答案 4 :(得分:0)
它有什么问题? return values of mysql_query()
是INSERT查询的漏洞,如果操作成功,则为true
。您是否尝试过插入无效值(如文本太长)?这应该产生一个警告并返回false。
但令人烦恼的是,您的代码容易受到SQL injection的攻击。请阅读sql injections on php.net如何解决该问题。
答案 5 :(得分:-1)
试试这个: if($ sonuc!== false){... 见php manual entry
答案 6 :(得分:-1)
JanHančič已经回答了这个问题,但作为旁注:
不要直接在查询中使用POST数据,它会严重信任我!!