繁体   English   中英

SQL返回错误,即使查询成功

[英]SQL Returning error even though query successful

我有一个基本的Web表单,它需要3个输入并将它们插入数据库表中。 数据库设置:

    require_once 'MDB2.php';
    include "sql-connect.php";

    $host = 'host.yyy.uk';
    $dbName = 'user01';
    $dsn = "mysql://$username:$password@$host/$dbName"; 

    $db = &MDB2::connect($dsn); 
    if (PEAR::isError($db)) { 
        die($db->getMessage());
    }

    $db->setFetchMode(MDB2_FETCHMODE_ASSOC);

但是,即使将数据正确输入到DB中并将数据输入到DB中,php也会返回错误(无效查询:键“ PRIMARY”的条目“ AAA123(ACode)”重复)。 这是我处理表单的代码:

if (isset($_POST['submit'])) {
    $sql = "INSERT INTO MODULES (APart, ACode, ATitle) VALUES ('$_POST[APart]', '$_POST[ACode]', '$_POST[ATitle]')";

    mysql_query($sql);

    $endResult = mysql_query($sql);

    if (!$endResult) {
        $message  = 'Invalid query: ' . mysql_error() . "\n";
        $message .= 'Whole query: ' . $sql;
        die($message);
    }
}

您正在运行查询两次。

第一次,它成功了,但是您什么都不做。

第二次失败,但是第一次成功,因此您获得了部分成功(已创建数据)。

只需删除重复项即可。

if (isset($_POST['submit'])) {
    $sql = "INSERT INTO MODULES (APart, ACode, ATitle) VALUES ('$_POST[APart]', '$_POST[ACode]', '$_POST[ATitle]')";

    // mysql_query($sql); /* REMOVE THIS LINE - this query succeeds */

    $endResult = mysql_query($sql); /* LEAVE THIS LINE - this fails if the first succeeds, because of your key constraints */

    if (!$endResult) {
        $message  = 'Invalid query: ' . mysql_error() . "\n";
        $message .= 'Whole query: ' . $sql;
        die($message);
    }
}

另外,研究PDO和MySQL库以防止注入。

错误:输入重复意味着您正在尝试插入数据库中已经存在的行。


从列(Acode)中删除主键,或者在多个列上添加唯一索引而不是主键。

索引最佳做法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM