如何在插入php之前检查数据库中是否存在数据

时间:2015-01-24 15:39:33

标签: php

$sqlorg = mysql_query("SELECT * FROM `organization`");
while($orgrows = mysql_fetch_array($sqlorg)) {
    //$dborgid = $orgrows['org_id'];
    $dborgnme = $orgrows['org_name'];
}

if ($dborgnme == $orgexist) {
    echo "<script type='text/javascript'>
            alert('Organization Name Already Used by other Organization');
            history.back();
        </script>";
} else {
    $orginsrt = mysql_query("INSERT INTO `organization`(`org_id`,`org_name`,`org_desc`,`category`,`vision`,`mission`,`col_id`,`image`) VALUES ('$orgid','$orgexist','$orgdesc','$orgcat','$orgvis','$orgmis','$getcol','$image')");

    echo "<script type='text/javascript'>
        alert('Proceed to next Step');</script>";
        //require ('orgsignup.php');
        header ('Location:orgsignup2.php');
    //echo "Not in the Record";

}

1 个答案:

答案 0 :(得分:0)

这个问题存在多个问题,因此无法轻易回答 - 我正在写这个“答案”作为Kio Rii的快速指南并获取更多信息:

1)使用MySQL,使用MySQLi进行程序性DB / PHP交互。

2)

while($orgrows = mysql_fetch_array($sqlorg)) {
    //$dborgid = $orgrows['org_id'];
    $dborgnme = $orgrows['org_name'];
}

$dborgnme将仅保留从数据库中提取的所有行的最终值。请考虑重新格式化While语句以包装在以下if(){} ... else{}

之外

3)在你的问题中添加一些上下文和信息 - 你在检查什么? $orgexist等值来自哪里?如果数据存在或者如果数据不存在会发生什么,您希望发生什么事件?

4)如果你只是检查名称,你最好用一个更好的SELECT语句来做,因为当前的选择是抓取所有的MySQL行,所以试试

采取:

$sqlorg = mysql_query("SELECT * FROM `organization`");

并将其转换为

$sqlorg = mysql_query("SELECT * FROM `organization` WHERE org_name LIKE '%".$orgexist."%' ");

如果名称非常相似,它们只返回行。然后,您可以使用此输出(返回的行数)继续执行脚本逻辑。

5)是的,我在第4部分中的解决方案快速而且脏,并且PDO或MySQLi预处理语句比旧MySQL和SQL语句中的变量注入更好,更好,更安全。

其他调试:

您可能会发现这非常有用:

$orginsrt = mysql_query("INSERT INTO `organization`(`org_id`,`org_name`,`org_desc`,`category`,`vision`,`mission`,`col_id`,`image`) VALUES ('$orgid','$orgexist','$orgdesc','$orgcat','$orgvis','$orgmis','$getcol','$image')") or die("insert fail: ".mysql_error());

这将告诉您插入失败的原因。