何かを「実行」する関数の結果を確認することが重要です。あなたはそう仮定して前進する前にそれが実際に行われたことを確認したいです。両方ともmove_uploaded_file
失敗するmysql_query
可能性があります。
その場合、戻り値(通常はブール値FALSE)で通知されます。そのリターンをキャプチャし、適切に反応します。そうすれば、何か問題が発生した場合でも、頭を悩ませて理由を理解する必要はありません。
$img_src = '/assuming/some/path/';
$img = false;
$error = false;
if (
isset($_FILES['image']) &&
$_FILES['image']['error'] != 4
) {
$img = $_FILES['image'];
switch ($img['error']) {
case '1':
case '2':
case '3':
$error = 'The uploaded file exceeds the maximum file size.';
break;
case '6':
case '7':
case '8':
$error = 'Server error. Please try again later.';
break;
}
if (!$error) {
$imgnew = date("YmdHis").".".end(explode('.',$img['name']));
$result = move_uploaded_file($img['tmp_name'],$img_src.$imgnew);
if (!$result)
$error = 'File error while processing upload';
}
if (!$error) {
$sql = "UPDATE news SET `image` = '".$imgnew."' WHERE `id` = '".$id."'";
$result = mysql_query($sql);
if (!$result)
$error = mysql_error();
}
}
// do something useful with the error message, preferrably not this
if ($img && $error)
die('There was a problem updating the image: '.$error);
ドキュメンテーション
PHPのmove_uploaded_file
-http: //us2.php.net/manual/en/function.move-uploaded-file.php
PHPのmysql_query
-http: //us2.php.net/manual/en/function.mysql-query.php