PHPバージョン4.4.4を使用しています。
画像を複数同時アップロードする(下記コード参照)のを作成している最中で、
画像ファイルは問題なくアップロード出来るのですが、
そのアップロードされたファイル名だけを
MySQLに書き込み(アップデート)をしたいのですが、
何故か出来ません。
==============
$count = 0;
<コード省略>
$count++;
$uploaded[$count] = $this_upload;
if (array_key_exists(1, $uploaded)) {
$mpic[1]=", picture_1='".$uploaded[1]['large']."', picture_1t='".$uploaded[1]['small']."'";
} else {
$mpic[1] = '';
}
if (array_key_exists(2, $uploaded)) {
$mpic[2]=", picture_2='".$uploaded[2]['large']."', picture_2t='".$uploaded[2]['small']."'";
} else {
$mpic[2] = '';
}
if (array_key_exists(3, $uploaded)) {
$mpic[3]=", picture_3='".$uploaded[3]['large']."', picture_3t='".$uploaded[3]['small']."'";
} else {
$mpic[3] = '';
}
if (array_key_exists(4, $uploaded)) {
$mpic[4]=", picture_4='".$uploaded[4]['large']."', picture_4t='".$uploaded[4]['small']."'";
} else {
$mpic[4] = '';
}
if (array_key_exists(5, $uploaded)) {
$mpic[5]=", picture_5='".$uploaded[5]['large']."', picture_5t='".$uploaded[5]['small']."'";
} else {
$mpic[5] = '';
}
if (array_key_exists(6, $uploaded)) {
$mpic[6]=", picture_6='".$uploaded[6]['large']."', picture_6t='".$uploaded[6]['small']."'";
} else {
$mpic[6] = '';
}
if (array_key_exists(7, $uploaded)) {
$mpic[7]=", picture_7='".$uploaded[7]['large']."', picture_7t='".$uploaded[7]['small']."'";
} else {
$mpic[7] = '';
}
if (array_key_exists(8, $uploaded)) {
$mpic[8]=", picture_8='".$uploaded[8]['large']."', picture_8t='".$uploaded[8]['small']."'";
} else {
$mpic[8] = '';
}
if (array_key_exists(9, $uploaded)) {
$mpic[9]=", picture_9='".$uploaded[9]['large']."', picture_9t='".$uploaded[9]['small']."'";
} else {
$mpic[9] = '';
}
$todayis = strftime('%A, %B %#d, %Y - %H:%M:%S ') ;
$who = $session['first_name'];
$query = "LOCK TABLES $table3_1 WRITE";
mysql_query($query);
$query = "UPDATE $table3_1 SET date_time_add_pic_2 = '$todayis',
by_who_pic_2 = '$who',
$mpic[1] $mpic[2] $mpic[3] $mpic[4] $mpic[5] $mpic[6] $mpic[7] $mpic[8] $mpic[9],
date_time_rmv_pic = '',
by_who_pic_rmv = ''
WHERE cID = '$c_id'";
mysql_query($query);
$query = "UNLOCK TABLES";
mysql_query($query);
==============
下記のようなコードを入れてみると
内容があるものはちゃんと表示されますし、
内容がないものは表示されません。
==============
echo $mpic[1];
echo $mpic[2];
echo $mpic[3];
echo $mpic[4];
echo $mpic[5];
echo $mpic[6];
echo $mpic[7];
echo $mpic[8];
echo $mpic[9];
==============
一体何が間違っているのか、エラーコードが出ないので解りません。
何処が間違っているのでしょうか?
教えて頂けると大変助かります。
どうぞ宜しくお願いします。
No.1ベストアンサー
- 回答日時:
こういう場合って、基本的に2つしか原因がないんですよね。
1.SQL文が間違っている(DB接続が正しくない場合も含む)
mysql_query($query); の前に「echo $query;」を入れて、そのSQL文が正しく動くかどうかをチェックしてみてください。
2.$queryの作り方が間違っている。
1.とほぼ同じなのですが、こちらは根本的なSQLの構文エラーを疑ってください。
この回答への補足
if (array_key_exists(1, $uploaded)) {
$ch1 = 1;
$mpic[1]=", picture_1='".$uploaded[1]['large']."', picture_1t='".$uploaded[1]['small']."'";
} else {
$ch1 = 0;
$mpic[1] = '';
}
if (array_key_exists(2, $uploaded)) {
$ch2 = 1;
$mpic[2]=", picture_2='".$uploaded[2]['large']."', picture_2t='".$uploaded[2]['small']."'";
} else {
$ch2 = 0;
$mpic[2] = '';
}
if (array_key_exists(3, $uploaded)) {
$ch3 = 1;
$mpic[3]=", picture_3='".$uploaded[3]['large']."', picture_3t='".$uploaded[3]['small']."'";
} else {
$ch3 = 0;
$mpic[3] = '';
}
if (array_key_exists(4, $uploaded)) {
$ch4 = 1;
$mpic[4]=", picture_4='".$uploaded[4]['large']."', picture_4t='".$uploaded[4]['small']."'";
} else {
$ch4 = 0;
$mpic[4] = '';
}
if (array_key_exists(5, $uploaded)) {
$ch5 = 1;
$mpic[5]=", picture_5='".$uploaded[5]['large']."', picture_5t='".$uploaded[5]['small']."'";
} else {
$ch5 = 0;
$mpic[5] = '';
}
<6~9同じく省略>
// if you want to replace the pics, delete old pic and upload new pic
if (!empty($row['picture_1'])) {
if ($ch1==1) {
unlink('../img/' . $row['picture_1']);
unlink('../img/' . $row['picture_1t']);
}
}
if (!empty($row['picture_2'])) {
if ($ch2==1) {
unlink('../img/' . $row['picture_2']);
unlink('../img/' . $row['picture_2t']);
}
}
if (!empty($row['picture_3'])) {
if ($ch3==1) {
unlink('../img/' . $row['picture_3']);
unlink('../img/' . $row['picture_3t']);
}
}
if (!empty($row['picture_4'])) {
if ($ch4==1) {
unlink('../img/' . $row['picture_4']);
unlink('../img/' . $row['picture_4t']);
}
}
if (!empty($row['picture_5'])) {
if ($ch5==1) {
unlink('../img/' . $row['picture_5']);
unlink('../img/' . $row['picture_5t']);
}
}
if (!empty($row['picture_6'])) {
if ($ch6==1) {
unlink('../img/' . $row['picture_6']);
unlink('../img/' . $row['picture_6t']);
}
}
if (!empty($row['picture_7'])) {
if ($ch7==1) {
unlink('../img/' . $row['picture_7']);
unlink('../img/' . $row['picture_7t']);
}
}
if (!empty($row['picture_8'])) {
if ($ch8==1) {
unlink('../img/' . $row['picture_8']);
unlink('../img/' . $row['picture_8t']);
}
}
if (!empty($row['picture_9'])) {
if ($ch9==1) {
unlink('../img/' . $row['picture_9']);
unlink('../img/' . $row['picture_9t']);
}
}
$todayis = strftime('%A, %B %#d, %Y - %H:%M:%S ') ;
$who = $session['first_name'];
$query = "LOCK TABLES $table3_1 WRITE";
mysql_query($query);
$query = "UPDATE $table3_1 SET date_time_add_pic_2 = '$todayis',
by_who_pic_2 = '$who'
$mpic[1] $mpic[2] $mpic[3] $mpic[4] $mpic[5] $mpic[6] $mpic[7] $mpic[8] $mpic[9],
date_time_rmv_pic = '',
by_who_pic_rmv = ''
WHERE cID = '$c_id'";
mysql_query($query);
$query = "UNLOCK TABLES";
mysql_query($query);
nanasi1976さま、どうも有難うございます。
echo $query;
を使用して間違ってる箇所を見つけ修正し、
問題なくMySQLに書き込み(アップデート)が出来たのですが、
今度は、元の画像ファイルを新たな画像ファイルに置き換える場合、
元の画像ファイルを先ずサーバーから消去させてから新しい画像ファイルをアップロードする
というのにする為、新たなコード(上記コード参照)を加え、このコードで問題なく動くのですが、ここで問題です。
例えば、写真1~3(picture_1, picture_2, picture_3)
の中には既に画像ファイルがあるとします
(写真4~9は画像ファイルがありません)。
その写真1の画像はそのままで、写真2と写真3だけ
新たな画像ファイルに置き換えようとした時、
何故か、新たな写真2の画像ファイルは写真1になり、
新たな写真3の画像ファイルは写真2になってしまうのです。
これを写真3だけ新たな画像ファイルに置き換えようとしても、
写真3の画像ファイルはアップデートされず、
代わりに写真1のところにその新たな画像ファイルが置き換えられるのです。
何処が間違ってるのでしょうか?
それとも何処が欠けてるコードがあるのでしょうか?
すみませんが教えて頂けると助かります。
宜しくお願いします。
No.4
- 回答日時:
なんだか話がややこしくなってきましたが、大丈夫でしょうか?
憶測ですが、画像1をそのまま、画像2と画像3を差し替えということは、SQLの$mpic[1]に画像2の情報が入っているのではないでしょうか?そうだとすれば、旧・画像1が画像2にupdateされるのはおわかりですよね?
画像2、画像3を新しい画像に差し替えるだけであれば、ファイルの差し替えだけで十分だと思うので、SQLでのupdateは必要ないような気がします。
どうしてもSQLでのupdateを必要とするなら、まず既存の情報をDBから取得して、その中から変更したい部分だけを差し替えて、update文にsetしてください。
この回答への補足
nanasi1976さま、
アドバイス、どうも有難うございます。
はい、その通りです。
ファイルの差し替えとは、どのようにして差し替えするのでしょうか?
すみません、PHPとMySQLについてはまだ勉強中なのもので。
No.3
- 回答日時:
とりあえず書き込みの権限はあるのでしょうか?
参照権限しかないならできないのは当たり前ですね
またデバッグとして
mysql_query($query);の行を
mysql_query($query) or die(mysql_error());
に置き換えてエラーを拾えないかみてみるとどうでしょう?
yambejpさま、どうも有難うございます。
echo $query;
を使用して間違ってる箇所を見つけ修正し、
問題なくMySQLに書き込み(アップデート)が出来ました。
回答番号:No.1 nanasi1976さまへの
補足・御礼メッセージを見て頂けると分かると思いますが、
又新たな問題で先へ進めません。
お忙しい中すみません、何処が間違っているのか、
教えて頂けるととても助かります。
No.2
- 回答日時:
php.iniのdisplay_errorsはOn、error_reportingはE_ALL & ~E_NOTICEなどに
なっていますか?
(php4だとdisplay_errorsは無いように書いてありますけど、個人的には
覚えてません・・・)
http://jp2.php.net/manual/ja/errorfunc.configura …
http://jp2.php.net/manual/ja/errorfunc.configura …
あと、echo $queryで出力されたSQLをMySQLで直接発行した場合に正常に発行されますか?
トランザクション(コミット)はどうでしょうか?
naktakさま、どうも有難うございます。
echo $query;
を使用して間違ってる箇所を見つけ修正し、
問題なくMySQLに書き込み(アップデート)が出来ました。
回答番号:No.1 nanasi1976さまへの
補足・御礼メッセージを見て頂けると分かると思いますが、
又新たな問題で先へ進めません。
お忙しい中すみません、何処が間違っているのか、
教えて頂けるととても助かります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アップロードファイルを表示す...
-
複数のパソコンの中の1つのパソ...
-
phpでcookieがうまく保存されない
-
1 OR 1=1 は どんな論理(約束事...
-
返信機能のツリー構造の深さを...
-
PHPについて。
-
phpのheader("Location:#pos")...
-
PHPからCSVをアップロード後、m...
-
[php初心者]サイトを見てデータ...
-
phpに関わる所での、form actio...
-
ゆゆにゃ。
-
【初心者】XAMPPのapacheの(恐...
-
プログラミング言語で、使える...
-
こちらはただの直列処理ですか?
-
PHPでこのコード自体に意味は無...
-
PHPとHTML+Xamppの掲示板で画像...
-
phpでPEAR::DBを使っているので...
-
index.phpって何ですか? 具体...
-
index.phpに入るには、どうすれ...
-
awsにApacheとPHPを入れて、何...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
sqlから多次元配列に要素を格納...
-
XAMMPが起動しません。
-
stringaddslashes 半角¥が消える
-
検索表示について
-
テーブルに入っているデータと...
-
SQLの結果が返ってこない
-
phpのエラーについてです
-
会員登録したらメールが送られ...
-
XAMPPで画面が真っ白になります。
-
POSTでセレクトフォームの値を渡す
-
DB(MySQL)から複数行のデータを...
-
PHP+mysqlでSQL文に文字数制限...
-
値が「1」のカラム名を求めたい。
-
UPDATE文のWHERE句について
-
PHP+MYSQL IF文の初歩
-
ボタンのonclick時における関数...
-
PHP+MYSQLでレコードの表示させ方
-
縦に長い<table>でなく横に長い...
-
PHP+MySQLの構造
-
sqlの検索結果件数を知りたい
おすすめ情報