0

クエリの送信中に問題が発生し、少し気が狂ってしまいました。これが私が話していることです。

 $query = "INSERT INTO combined(v_products_model, v_products_image, v_products_description_1, v_products_name_1, v_products_quantity, v_tax_class_title, v_status, EOREOR) " .
            "VALUES ('$fileName', '$fileName', '$description', '$description', '10', '--none--', 'Active', 'EOREOR')";
    mysql_real_escape_string($fileName);
    mysql_real_escape_string($description);
    $queryResult = mysql_query($query, $connect);
//  die(var_dump($queryResult));

if (!$queryResult) {
    die("Error with query: line 40 <br>
                 Query: $query <br>
                 Error: " . mysql_error());
}

何らかの理由でifステートメントが常に実行されるので、引数として$ queryResult == falseを指定しようとしましたが、同じ結果になります。

ステートメントを実行して「1」を返した$queryResultので、falseではないことを知っています。また、実行して「booleantrue」を返しました。die()var_dump

mysql_error()結果を返すことはありません。ブロックが実行されている理由を誰かに教えてもらえれば幸いです。

実際に印刷されるものは次のとおりです。ちなみに、クエリもエスケープされていません。

Error with query: line 40 
Query: INSERT INTO combined(v_products_model, v_products_image, v_products_description_1, v_products_name_1, v_products_quantity, v_tax_class_title, v_status, EOREOR) VALUES ('ts_aiw_wereall.jpg', 'ts_aiw_wereall.jpg', 'ALICE IN WONDERLAND we're a sk PUR TS S', 'ALICE IN WONDERLAND we're a sk PUR TS S', '10', '--none--', 'Active', 'EOREOR') 
Error:
4

2 に答える 2

1

生成されたクエリから:

'ALICE IN WONDERLAND we're a sk PUR TS S'
                       ^--- unescaped quote

クエリ文字列を生成した後にmysql_real_escape_string()を実行しているため、クエリに入力されるテキストをエスケープせず、クエリは失敗します。PHPは、魔法のように時間を遡って$query = ...、エスケープ呼び出しの値を反映するように行を再調整することはありません。

エラーメッセージが表示されない理由は説明されていません。私が考えることができるのは、MySQLに対して複数の接続が開いていて、その接続でクエリを実行していること$connectです。これはデフォルトの接続ではないため(たとえば、最後に作成された接続)、mysql_error()は次のエラー結果を返します。エラーのない他の接続。

mysql_error($connect)エラーメッセージが表示されるかどうか試してみてください。

于 2012-05-06T20:36:44.207 に答える
-2

コードのこの部分では、引用符が原因でクエリが失敗します。

'ALICE IN WONDERLAND we're a sk PUR TS S', 'ALICE IN WONDERLAND we're a sk PUR TS S'

この関数を使用して、addslashes()値を挿入する前にそれらの値をエスケープできます。例えば

addslashes(ALICE IN WONDERLAND we're a sk PUR TS S);

stripslashes()で使用する値の引用符エスケープを削除するために使用することを忘れないでくださいaddslashes()

次に、これらの行を配置する必要があります

mysql_real_escape_string($fileName);
mysql_real_escape_string($description);

クエリを作成する前に。

于 2012-05-06T20:45:06.830 に答える