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

phpとmysqlをお解りの方、教えて頂けませんか?
一応、”登録できました。”と表示されるのですが、データベースを見てみると8
項目全て空白の登録になってしまいました。WORDPRESSを使っているからおかしいのでしょうか?しかも、SUBMITをクリックでは上手くいかず、form.phpかresult.phpの前に用意しているresultをクリックすると”登録できました。”と表示されて、空白が登録されるのです。
例ではカラムを2つにしています。
<!---ここからresult.php->
<a href="<?php bloginfo('url'); ?>"/result>result</a>
<?php
$name=mysql_real_escape_string($_POST['name']);
$home_page=mysql_real_escape_string($_POST['home_page']);
$conn = mysql_connect("XXX","XXX","XXX");
mysql_select_db(XXX,$conn);
$sql="INSERT INTO uekiyahan(company_name,,home_page) VALUES('$name' ,'$home_page')";
mysql_query($sql,$conn) ;print("登録しました。");mysql_close($conn);
?>
<!---ここからform.php->
<a href="<?php bloginfo('url'); ?>"/result>result</a>
<form action="/result" method="post" >
<ul>
<li>会社名</li><li><input type="text" name="name" value=""</li>
<li>ホームページアドレス</li><li><input type="text" name="home_page" value=""></li>
<li><input type="submit" value="申し込んじゃうよー!"></li>
</ul>
</form>

●質問者: M
●カテゴリ:インターネット ウェブ制作
✍キーワード:MySQL name PHP print SQL
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● きゃづみぃ

company_name,,home_page

これだと 項目3つになっちゃう。


入れる側が

'$name' ,'$home_page'

で ずれちゃいますね。



あと 項目の型とか桁数とかは 大丈夫なのかな?

◎質問者からの返答

すいません、項目は文字数が多かったので消し忘れです。両方ともに8項目ずつです。型はvarchar型です。桁数は一番少ない項目でvarchar(10)で、長くて”九州・沖縄”とかです。


2 ● うぃんど
ベストアンサー

mysql_query($sql,$conn);print("登録しました。");mysql_close($conn);

上記では”MySQL側でのSQL実行が失敗してもphpの動作には影響しない”ため、

mysql_queryの成功/失敗のいずれでも続きの処理(print以降)が実行されてしまいます

対策としては、例えば下記のような具合にしてmysql_queryが失敗(結果がFALSE)した場合はphpの動作を強制終了するなどの処理を書いておくことで行います

mysql_query($sql,$conn) or die('失敗しました' . mysql_error());
print("登録しました。");
mysql_close($conn);

個人で使うならば前述の方法でも十分だったりしますが、多数の人に利用してもらうつもりであれば(もう少し丁寧に)正常時とエラー時の処理を分けるなどをすることになるでしょう

if (mysql_query($sql,$conn)) {
 print '登録しました';
} else {
 print '失敗しました' . mysql_error();
}
mysql_close($conn);

返信への追記

>変更してみましたが、主な問題点は改善されませんでした。(泣)

こちらが出せるのはヒントだけです

真にミスしてる点は自分で探してもらうしかないです

もう少しだけ詳しく書いておきますので再度チャレンジしてみてください

エラー処理を加えてもなお「登録しました」になる場合はmysql_queryの直前にprint($sql)を書き加えて$sqlが思い通りのSQL文になっているかを確認してみましょう

SQLに抜けている箇所がある場合($nameや$home_pageなどの変数が空っぽなど)には、$sql=の式そのものを見直したり、$nameなどに値を入れている箇所(mysql_real_escape_string($_POST['name']);など)を見直したりしてみましょう

ここでもまたprint($_POST['name'])などを入れてみて、値を正しく受け取れているかを確認してみると良いでしょう

値を正しく受け取れていない場合には$_POST['name']で良いのか? パラメータ名はnameで良いのか? などという具合に思い違いや間違いが無いかを順に辿っていきましょう

では、がんばって

◎質問者からの返答

変更してみましたが、主な問題点は改善されませんでした。(泣)

関連質問


●質問をもっと探す●



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