ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと

社内で在庫管理システムを構築することになり、本をたよりにコーディングをしているのですが、エラーが発生して先へ進めなくなってしまいました。

<?php

/* データベースに接続 */
$link = dbConnect();

/* 本日の日付を取得 yyyy-mm-dd */
$dt = date("Y-m-d");

/* リクエストデータを変数に格納 */
$act = getFormData("act");
$stk_map = getFormData("stk_map");
$stk_day = getFormData("stk_day");
$stk_div = getFormData("stk_div");
$stk_maker = getFormData("stk_maker");
$stk_brandname = getFormData("stk_brandname");
$stk_now = getFormData("stk_now");
$stk_stdprice = getFormData("stk_stdprice");
$stk_pcgprice = getFormData("stk_pcgprice");
$stk_purchaser = getFormData("stk_purchaser");
$stk_remarks = getFormData("stk_remarks");

$id = $row["id"];

if ($act == "add") {

/* ファイルアップロード処理 */
$stk_imgname1 = fileUpload("uploadfile1");
$stk_imgname2 = fileUpload("uploadfile2");
$stk_imgname3 = fileUpload("uploadfile3");

/* データを追加 */
$query = "INSERT INTO stk_t SET";
$query .= (", stk_map = " . makeSqlStr($stk_map));
$query .= (", stk_day = " . makeSqlStr($stk_day));
$query .= (", stk_div = " . makeSqlStr($stk_div));
$query .= (", stk_maker = " . makeSqlStr($stk_maker));
$query .= (", stk_brandname = " . makeSqlStr($stk_brandname));
$query .= (", stk_now = " . makeSqlStr($stk_now));
$query .= (", stk_stdprice = " . makeSqlStr($stk_stdprice));
$query .= (", stk_pcgprice = " . makeSqlStr($stk_pcgprice));
$query .= (", stk_purchaser = " . makeSqlStr($stk_purchaser));
$query .= (", stk_remarks = " . makeSqlStr($stk_remarks));
$query .= (", imgname1_c = " . makeSqlStr($stk_imgname1));
$query .= (", imgname2_c = " . makeSqlStr($stk_imgname2));
$query .= (", imgname3_c = " . makeSqlStr($stk_imgname3));

/* クエリーを実行 */
mysql_query( $query )
or die("クエリーの実行に失敗しました");

}

?>

<?php

/* MySQLとの接続を閉じる */
mysql_close($link);

?>

「クエリーの実行に失敗しました」という所でひっかかってしまいます。
文字数の関係で省略した部分があります。
解決法をご教授頂けると助かります。。

A 回答 (5件)

そもそも、insertの場合は



insert into テーブル (カラム0, カラム1, ...) values (値0, 値1, ...)

という形式が基本のはずです。
insertとupdateの構文がゴッチャになっていませんか?
    • good
    • 1
この回答へのお礼

ご指摘ありがとうございます。

updateの構文を記述してしまっていたんですね……。
ご指摘の通り、insert into テーブル (カラム0, カラム1, ...) values (値0, 値1, ...) という記述に変更したところ、データベースへの登録ができるようになりました。

ありがとうございます。もの凄く嬉しいです。

所で、画像のアップロードはできるのですが、うまく表示されません。
ご教授頂ければ助かります。

お礼日時:2007/04/27 14:39

> データ表示部分



ここで、「/* 画像が投稿されていれば表示 */」というコメントがついている箇所の最後にある\nは、
\を\そのものとして扱うために\\nにしなければならないのではありませんか?

また、ID~備考の各欄の中身が出ていませんが、
<?= ~ ?>というスクリプティングデリミタは文法上正しいのでしょうか?
php.iniなどでshort_open_tagを有効にしてあれば <? ~ ?> という
形式は使えますが、= が入っていいのかどうか…。
    • good
    • 0

> $query .= (", stk_map = " . makeSqlStr($stk_map));



stk_map の直前のカンマは必要でしょうか?
また、今回のように、SQL文が長きにわたる場合は
ヒアドキュメントを使ってみると少しは見やすくなるかもしれません。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

ご指摘頂いた点のカンマを取りましたが変わりないようです。
ヒアドキュメントについては、少し調べてみましたが使い方がよく分かりません。。

ちなみにPHP、並びにMySQLの環境は、
PHP 4.4.5
MySQL 4.4.22
OSはWindowsです。

お礼日時:2007/04/27 13:57

入れる値に日本語などが入っている場合は ' で囲わないとエラーになると思います。


例)$query .= (", stk_map = '" . makeSqlStr($stk_map) ."'");
    • good
    • 0
この回答へのお礼

ご指摘ありがとうございます。

問題箇所を ' で囲んでみましたが、同じエラーが発生してしまいます。

文字数制限の関係で全てのコードを記入。

お礼日時:2007/04/27 12:17

エラーだった所に、echo mysql_error();を


入れてはどうですか。エラーメッセージが見れます。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
教えて頂いたコードを挿入してみました。
以下エラーの結果です。

入庫する商品の情報を入力し、最後に「追加」を選択してください。 Bad query: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' stk_map = ''1111'', stk_day = '20070423', stk_div = ''製品(PC・

翻訳してみると、どうやら SQL構文が間違っているようです。
しかし、いかんせん何処が間違っているのかさっぱり分かりません。。

お礼日時:2007/04/27 12:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!