php表单错误

时间:2010-01-13 09:11:33

标签: php mysql

你好我试图设置自定义错误。我有一张表格。 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

7 个答案:

答案 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数据,它会严重信任我!!