0

mysql_query以下は、関数内で実行されるコードを生成するために使用されているコードです

for($i=1;$i<=$totalcols;$i++) {
    $val_array[] = "\'\".\$data->val(\$i,$i).\"\'";

}

implode上記の配列は、 and関数を使用してスラッシュなしで文字列に変換されますstripslashes

$val = stripslashes(implode(",",$val_array));

そして、そのすべてが次のような文字列を生成します

'".$data->val($i,1)."','".$data->val($i,2)."','".$data->val($i,3)."'

これは、内部で使用している文字列ですVALUES()。コードを実行してからデータベースに値を挿入する代わりに、文字列をそのままデータベースに挿入しています。 mysql_query 関数は次のように使用されています。

mysql_query("INSERT INTO import_excel ($val_string) VALUES($val)") or die(mysql_error());

データがDBに挿入された場合のスクリーンショットは次のとおりです ここに画像の説明を入力

4

1 に答える 1

1

あなたがやりたいことは、通常、次のように行われます。

$val_array[] = "'{$data->val($i)}'";

つまり、変数値は、実行時ではなく構築時に文字列に挿入されます。

これは、PHP を悪用して実行する方法はあるものの、通常、クリーンな PHP コードは「eval」関数を使用しないためです。

また、通常は関数を適用して値の引用符をエスケープし、SQL インジェクションから保護する必要があります。

$val_array[] = "'".mysql_real_escape_string($data->val($i))."'";
于 2012-10-15T07:04:46.630 に答える