0

挿入する前にレコードが存在するかどうかを確認しようとしています。チェックするための私のコードは次のとおりです。

$query = "SELECT * FROM firm WHERE ( name = '" . mysql_real_escape_string( $name ) . "' AND area = '" . mysql_real_escape_string( $areaname ) . "' )";
$rs = mysql_query( $query );

    if ( !$rs ) {
       echo "The firm for this area already exist.";
       trigger_error( mysql_error() );
    } else {
       echo "Saved.";
    }

私の挿入コードは次のとおりです。

$result = array(); 
mysqli_autocommit( $dbc, FALSE );

$sql1 ="INSERT INTO `firm`(name, area, VAT, active) VALUES ('$name', '$areaname', '$VAT', '$active')"; 
//echo $sql1;
$result[] = mysqli_query( $dbc, $sql1 ) ;

$sql2 = "INSERT INTO `area`(name, hub_name, fk_hub_id) VALUES ('$areaname'
         ,(SELECT `name` from hub WHERE name = '$hub_name')
         ,(SELECT `id` from hub WHERE name = '$hub_name'))
        ";
//echo $sql2;
$result[] = mysqli_query($dbc,$sql2);       
$success = true;

if ( is_array( $results ) ) {
    foreach( $results as $result ) {
       if ( !$result ) {
           $success = false;
       }
    }
    if ( !$success ) {
       mysqli_rollback( $dbc );
    } else {
       mysqli_commit( $dbc );
    }
}

私の問題は、エラー メッセージが機能しないことです。フォームを送信してレコードが存在すると、挿入されていなくても保存されたと表示されます。誰が私が間違っているのか教えてもらえますか?

4

2 に答える 2

0

mysql_num_rows() を使用して結果をカウントします。

$query = "SELECT * FROM firm WHERE (name = '" . mysql_real_escape_string($name) . "' AND area = '" . mysql_real_escape_string($areaname) . "' )";
    $rs = mysql_num_rows(mysql_query($query));

    if ($rs != 0) {
            echo "The firm for this area already exist.";
            trigger_error(mysql_error());
        }
    else {
     echo "Saved.";}

mysql_* 関数の使用は推奨されないことに注意してください

PDOを見てください

http://php.net/manual/de/book.pdo.php

そして、できるだけ早くコードを PDO に移植してみてください。

于 2013-08-08T08:46:12.190 に答える
0

あなたのコードにはたくさんのスパゲッティが含まれています。PHP PDO拡張機能を見てください。ラインを 90% 削減します。SQL クエリをインラインで PHP 関数を実行しないでください。

クエリにエラーがあります。変数名から括弧を削除します

$name = mysql_real_escape_string($name);
$area = mysql_real_escape_string($areaname);

$query = "SELECT * FROM firm WHERE name = '$name' AND area = '$area'";
$rs = mysql_query($query);

if (!$rs) {
        echo "The firm for this area already exist.";
        trigger_error(mysql_error());
    }
else {
 echo "Saved.";
}

于 2013-08-08T09:01:12.383 に答える