人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPで以下のようなプログラムは成り立つでしょうか
エラーが出ているので成り立たないとは思いますがなぜなのかわかりません
写真3枚をそれぞれUPDATEしたしないかで SQL文を書くやり方です
そうすると
rename("$PHOTOTMP$imagefile1", "$PHOTODIR$imagefile1");
のところでエラーがでます。よろしくお願いします。
プログラムはコメント欄に


●質問者: yamamoto170
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● a-kuma3

コメントには、ソースの一部をそのまま貼りつけたんですよね?

rename の行の頭に入ってる全角の空白みっつ が駄目です。
imagefile2 の rename の行にも入ってます。

あと、$sql の中身の photofilename1 の頭にある全角空白も駄目です。


2 ● うぃんど
ベストアンサー
   rename("$PHOTOTMP$imagefile1", "$PHOTODIR$imagefile1");
↑↑↑ この部分が全角空白になってる

ついでに

    photofilename1 = '$imagefile1',
↑↑↑ この部分も全角空白になってる

さらにSQLはダブルクォーテーションではなく、
シングルクォーテーションではないかと思われる。
(MicrosoftAccessは例外的にダブルだけど、
CURDATE関数はなかったような・・・)

$sql = "UPDATE tblphoto SET photofilename = '$imagefile',
photofilename1 = '$imagefile1',
photofilename2 = '$imagefile2',
categoryid = '$categoryid',
jyusyo = '$jyusyo',
moyorieki = '$moyorieki',
sikiti = '$sikiti',
tatetubo = '$tatetubo',
madori = '$madori',
setubi = '$setubi',
comment = '$comment',
regdate = CURDATE()
WHERE photoid = $photoid";

エラーメッセージ不明なので、以上とりあえず。


うぃんどさんのコメント
データベースのカラムが全部文字型になってるけど、 下記などは数値型じゃないのかな? categoryid = '$categoryid', ↓ categoryid = $categoryid, こっちは文字型、数値型のどちらもありえるけど・・・ tatetubo = '$tatetubo',

yamamoto170さんのコメント
なぜかシングルクォーテーションにすると 更新できなくなります¥”でやることにしました

うぃんどさんのコメント
SQLでは、文字列はシングルクォーテーションで囲み、 数値は囲まないという具合になっており、 ほとんどのデータベースが採用しています。 回答文中にも書きましたがAccessは例外です。 MySQLも、独自の仕様としてどちらでも動こうとしてくれますが、 間違った解釈をする場合もあるため、 出来る限りSQL標準に沿って書いておくべきだったりします。 動いたから満足ということであれば、 これ以上のおせっかいはやめておきますが、 シングルとダブルの使い分けはphpでもMySQLでも重要なポイントなので、 更新できなくなるコードを投げてもらえれば検討してみたいとは思っています。

yamamoto170さんのコメント
ご指摘ありがとうございます やはりシングルで囲むのが仕様なのですね そちらで調整しなおしてみます。 ありがとうございます

yamamoto170さんのコメント
シングルクォーテーションで問題なく更新できるように なりました ありがとうございます
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ