こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

PHPを使ってMySQLのフィールドの追加ができない

function部分は外部ファイル
function getResult($query){
$result[result]=mysql_query($query,$this->connect) or die(mysql_error());
$result[count]=@mysql_num_rows($result[result]);
return $result;
}
$null = "";
$query="insert into main values ($_POST[id],'$_POST[name]',$null,$null,$null,'$null')";
$insert[result]=$db->getResult($query);

このように記述してmainテーブル内に新規フィールドの追加をしようとしたのですが、次のようなエラーが出ます。
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 ',,'')' at line 1

$nullは結局NULL値なので、
($_POST[id],'$_POST[name]',,,,)
でやってみたのですが、これも同じです。
当たり前といえば当たり前ですが、
($_POST[id],'$_POST[name]',,,,)を
($_POST[id],'$_POST[name]')と
省略してみましたが、数が合わないとエラーが返ってきました。


定型のfunctionに頼らず、$insert[result]=$db->getResult($query);のかわりに
if(mysql_query($query,$db->connect)){
echo"成功";
}else{
echo"失敗";
}
このようにも試してみたのですが、データは追加されず、失敗と表示されてしまいます。

どこをどう修正すればいいでしょうか。
どなたかお助けください。

ちなみに1,3~5番目が数値型で、2,6番目が文字型、1番目以外はNULLを許可しています。
どこもオートインクリメントは使用していません。

投稿日時 - 2009-11-27 17:55:38

QNo.5480344

すぐに回答ほしいです

質問者が選んだベストアンサー

>insert into main values (123,'name_test',,,,'')

ほんとにこう表示されるのであればNULLを指定してやらないと
文法エラーでは?

insert into main values (123,'name_test',NULL,NULL,NULL,'')

投稿日時 - 2009-11-27 23:21:16

お礼

おそくなりました。
回答ありがとうございました。
NULLを入れて何とか動いてくれました

なぜここでNULLかは本にも載っていないし理由は分かりませんが・・・

ありがとうございました。

投稿日時 - 2009-11-29 14:24:56

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

$query を表示すれば何が間違っているか判りますよ。

$_POSTの書き方がおかしいです。

投稿日時 - 2009-11-27 18:04:38

お礼

ありがとうございます。
今回の件に関係ないところまで記述しないほうが質問内容を明確にできると思い、$_POST[id]で質問していますが、実際はPOSTで送られてもGETで送られてもデータがとれるように
if($_SERVER['REQUEST_METHOD'] == "POST") {
$in = $_POST;
}else{
$in = $_GET;
}
としています。
で、$_POST[id]というのは実際は$in[id]ですが、
$queryの中を表示させてみましたが、きちんとデータは受け渡しされています。

表示したところ
insert into main values (123,'name_test',,,,'')
となっていますので、ここの部分での間違いはないと思うのですが・・・

投稿日時 - 2009-11-27 18:44:39

あなたにオススメの質問