2017-03-20 12 views
0

このphpの挿入コードは、csvファイルから値をインポートする私のPHPスクリプトの一部です。私はcsvファイルに設定する他の値でfld_idを挿入します。 のCSVコンテンツの例:123456789、タイトル、説明:値の構文で選択したPHPの挿入

data[0] is 123456789 
data[1] is title 
data[2] is description 

挿入は、MySQLクライアント上でruningている場合、値が挿入正常ですが、PHPページからエラーが返されます。fld_idcatにすることはできませんヌル。

これは、PHPコードの一部です:

/*other code*/ 
do { 
    if ($data[0]) { 
     mysql_query(" 
       INSERT INTO table_imports 
       (
        fld_username, 
        fld_idcat, 
        fld_title, 
        fld_desc, 
        fld_userimport 
       ) 
       VALUES 
       (
        '$Username', 
        (select id_cat from table_category where id_cat_random = '".addslashes($data[0])."'), 
        '".addslashes($data[1])."', 
        '".addslashes($data[2])."' 
        'userImport'       
       ) 
     "); 
    } 
} while ($data = fgetcsv($handle,1000,",","'")); 
header('Refresh: 6; URL=finishPage.php'); 
die(mysql_error()); 

/*other code*/ 

変数$データで値123456789を渡すために、このPHPインサートを修正するためにどのように[0]を選択内側?

私は私の問題

おかげで、すべての場合

+0

正確なエラーメッセージは何ですか?それはMySQLのエラーのようには見えません。あなたのコードはMySQLからのエラーをチェックすることさえできません。 – Barmar

+1

[新しいコードでは 'mysql_ *'関数を使わないでください](http://stackoverflow.com/questions/12859942/)。それらはもはや維持されておらず(正式に推奨されていません)(https://wiki.php.net/rfc/mysql_deprecation)。 [赤いボックス](http://uk.php.net/manual/en/function.mysql-connect.php)を参照してください。代わりに[* prepared statements *](https://en.wikipedia.org/wiki/Prepared_statement)について学び、[PDO](http://php.net/pdo)または[MySQLi](http:// php.net/mysqli) - [この記事](http://php.net/manual/en/mysqlinfo.api.choosing.php)は、あなたに最適なものを決定するのに役立ちます。 –

+1

あなたのスクリプトは[SQLインジェクション攻撃](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php)の危険にさらされています。[Little Bobby Tables](http://bobby-tables.com/)[あなたが入力を逃れている場合でも、その安全ではありません!](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around -mysql-real-escape-string)[prepared parameterized statements](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)を使用します。 –

答えて

0

を説明したいと考えています。私は私の問題を解決しました。スクリプトは正常に動作しますが、変数data [0]の値はcsvファイル形式がUTF8ではないため、渡されませんでした。 csvファイル形式を変換した後、スクリプトは正常に動作しました。

関連する問題