1

MySQL テーブルの既存の値を編集するフォームがあります。フィールドの 1 つは画像のファイル名を格納します (別のフィールドは画像のフォルダーの場所を格納します)。ファイルには、別の画像をアップロードし、元の画像名フィールドの画像名を置き換えるためのアップロード フィールドがあります。

ファイルを選択して既存の画像を置き換えると、これは正常に機能します。画像を置き換えることを選択しない場合、フィールドは空のデータで UPDATE になります。

基本的に、選択してアップロードされた画像がある場合にのみ、UPDATE sql クエリを実行しようとしています。

私はこのコードを使用しています:

if(!empty($_FILES['file_slick']))
{
$slick = $_FILES['file_slick']['name'];
copy($_FILES['file_slick']['tmp_name'],'../images/product/'.$folder.'/'.$slick); 
$sql_slick = "UPDATE tbl_product SET prod_slick = '".$slick."' WHERE prod_id = '".$prodid."'";
mysql_query($sql_slick);
}

if(!empty($_POST['file_slick'])) を試しましたが、どちらも機能しません。ファイルを選択してアップロードすると、正しいフォルダに移動さ​​れ、画像ファイル名がフィールドに更新されます。画像が選択されていない場合、空のデータが画像ファイル名フィールドに更新されます。

私はインターネット(そしてほとんどここ)を見回しましたが、私が見ることができることから、空のデータを防ぐためのチェックが機能するはずです。

誰かがここで何か間違ったことを見ることができますか?

4

3 に答える 3

4

試すif(!empty($_FILES['file_slick']['name']))

于 2013-05-04T12:18:05.353 に答える
0

は多次元配列であるため$_FILES['file_slick']、関数はtrue を返すため、画像の確認にempty使用できます$_FILES['file_slick']['error'] == 0

于 2013-05-04T12:36:00.363 に答える
0

データベース クエリを処理するスクリプトで、クエリの直前に、ファイル パスのクエリ プレースホルダー、またはデータベースから供給された変数にアップロードされた画像またはファイルへの参照を設定します。

たとえば。私が行っていたプロジェクトでは、既に保存されているファイルのファイル パスを表示する必要がありました。だから私はそれをデータベースから引き出してどこかに保管して、クエリの前のファイルパスが empty() の場合は以前の値に設定しました。

私は欠点を見つけていませんが、変更を加えるたびに、新しい送信が行われなかった場合、既存のものでデータベースを書き換えているため、小さな問題があると確信しています。

私のスクリプトはこのようなものでした

$final_size = size_calc( $upload['size'] );
$file_path = addslashes(UPLOAD_DIR . $name);

if ( empty($file_path) ) $file_path = addslashes( $post['file_path'] );
    if ( empty($final_size) ) $final_size = $post['file_size'];
//Perform query
$query = "UPDATE posts SET post_title = '{$post_title}', visible =     {$visible}, post_content = '{$post_content}', post_cat_id =     '{$post_cat_id}',file_path = 
    '{$file_path}', file_size = '{$final_size}' WHERE id = {$post_id} LIMIT 1";
    $result = mysqli_query( $link , $query );
于 2016-10-13T03:43:15.540 に答える