1

PHP を使用して、ファイルを受け入れ、MySQL データベースに情報を入力するサービスを作成しています。エラーは発生していません (少なくとも error_log ディレクトリにはありません)。ファイルは正常にアップロードされますが、情報はデータベースに入力されません。リストに表示されるエラーはないと述べたように、エラーがある可能性が非常に高く、どこを見ればよいかわかりません。

include("connect.php");
$type = "jpg";

foreach ($_GET as $key => $value) { eval("\$" . $key . " = \"" . $value . "\";");}  
$filename = isset($_REQUEST["filename"]) ? $_REQUEST["filename"] : "jjj";  
$append = $_REQUEST["append"];
if($code == "XXX")  
{  
    try  
        {       
            mysql_query("INSERT INTO `images-table` (`file-name`, `file-type`) VALUES (`". $filename . "`, `" . $type . "`)");

            if(!$append)  
                $file = fopen("uploads/" . $filename,"w");  
            else  
                $file = fopen("uploads/" . $filename,"a");  

            $input = file_get_contents ("php://input");  
            fwrite($file,$input);  
            fclose($file);  

    echo "OK";

        }  
    catch (Exception $e)   
        {  
            echo 'Caught exception: ',  $e->getMessage(), "\n";  
        }  
}
else
{
echo 'You do not have permission to do this.';
}
4

1 に答える 1

2

INSERTステートメントの値がバッククォートでラップされていたためです。一重引用符である必要があります。バッククォートは識別子、シングル クォーテーションは文字列です。

mysql_query("INSERT INTO `images-table` (`file-name`, `file-type`) 
             VALUES ('". $filename . "', '" . $type . "')");

補足として、変数のSQL Injection値が外部から取得された場合、クエリは脆弱です。予防方法については、以下の記事をご覧ください。を使用すると、値を一重引用符で囲む必要がなくなります。PreparedStatements

その他

于 2013-02-01T14:43:41.870 に答える