0

PHP コードと、データベースに一意のフィールドがあるフィールドがあります。人々がフォームに記入し$_POST['name']、データベースに既にある場合、エラーが発生します。

それが私が持っていて欲しいものですが、if/elseステートメントで処理できるように、エラーがあるかどうかを確認したいと思います。

これは私のコードです:

$db = new database();
$sql = "INSERT INTO product_groepen (name) VALUES (".$_POST['name'].")";
$result = $db->executeQuery($sql);
if ($result)
{
    $db->executeQuery($sql);
    $page .= 'Yes';
} else {
    $page .= 'No';
}

エラー:

警告: PDO::query() [pdo.query]: SQLSTATE[23000]: 整合性制約違反: 1062 行 26 の /classes/database.class.php のキー 2 のエントリ 's' が重複しています

動作し、動作していない場合は「いいえ」と表示されますが、エラーは残ります。

4

1 に答える 1

2

INSERT IGNORE重複している場合は挿入を無視してみてください。mysql_*また、インジェクションの脆弱性をまだ使用している場合は、mysqlそれを回避します。

$db = new database();
$sql = "INSERT IGNORE INTO product_groepen (name) VALUES ('".mysql_real_escape_string($_POST['name'])."')";
$result = $db->executeQuery($sql);
$affected = mysql_affected_rows($result); // you must have that function something like $db->affectedRows ?
if ($affected){
    $page .= 'Yes';
} else {
    $page .= 'No';
}

クエリを2回実行しないようにしてください

于 2012-09-04T12:17:02.433 に答える