http://book.mycom.co.jp/support/bookmook/PHP/
まず、会員新規登録画面で県テーブルから値を取得してきません。
当然、DBには県データを作成してあります。
http://www.boardholic.net/member/index.php?type=regist&action=form
他の項目を埋めて会員登録を行うとunknown errorが出ます。
$result->getDebugInfo()でechoを掛けますと、[nativecode=1065 ** Query was empty] と出ます。
次に、PHPMyAdminで会員マスターに直接データを挿入し、会員削除を行いますと、syntax error が出ます。
$result->getDebugInfo()のechoでは、
DELETE FROM m_member WHERE id = [nativecode=1064 ** 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 3]
一応、必死にソースを追って、変数、引数、定数などechoで調べました。
そもそも、稼動したサンプルを掲載しているはずですから・・・
この本の著者はモジュール版のローカルで試しているはずですが、レンタルサーバーがCGI版PHPということなど関係あるのでしょうか?
レンタルサーバー ヘテムル
http://heteml.jp/service/function/
どなたか、エラー原因をご推察いただけないでしょうか?
問題が3つあるということですね。
1)入力画面で県が表示されない
2)入力フォームで、unknown errorが表示される[Query was Empty]
3)会員削除で、文法エラーが出る。
1)については、
確認方法としては、
PHPmyAdminで、県を取り出すところで実行されているSQL文を実行してみて県のリストが取り出せるか?
を確認する。
SELECT * FROM m_ken;
取り出せた後、正確にHTMLに出力できているか?
がチェックポイントになりそうです。
MYDB.inc.phpというファイル
db_get_ken_dataの関数が正確かどうかをチェックする。
2)実行しているSQL文を表示させてみてください。
多分、SQL文が空なのではないかと思います。だから、Query was Emptyと表示されるのではないかと。
3)DELETE FROM m_member WHERE id =
で終わっているので、idの値が指定されていないためにSQL文が成立していない。
文法エラーとして表示されているのではないかと思います。
MYDB.inc.phpというファイル
db_delete_member_idという関数に間違いがあるか、idがうまく渡されていないのかもしれません。
おそらく、どの動作もレンタルサーバーで違いが出そうな処理は思いつきませんでした。
know94space さま
御回答ありがとうございます。ほんっと助かりました。
おかげで無事正常動作を確認いたしましたm(_ _)m
結論から書きますと、sub.inc.php の function sjis2euc_for_Winodows($data)およびfunction euc2sjis_for_Winodows($data)が邪魔をしておりました。
know94space 様のおっしゃるとおり、CGI版PHP関係なくソースに問題があるとのご指摘で、MYDB.inc.php中心に調べていきました。
(1)ですが、MYDB.inc.phpのSQL(function execute_sql($conn,$sql))では無事取得されているのに、function db_get_ken_data($conn)では値が空になっているところまでつきとめ、多次元配列をしているfunction select_arrays($conn, $sql)に原因があると睨み、片っ端から、echoを掛けたところ、$value = sjis2euc_for_Winodows($value);のところを吊り上げました。
sjis2euc_for_Winodows部分は文字コード変換の定型サブルーチンでしたので、気にも留めていませんでしたが、コメントアウトしたら正常終了を確認しました。
ここまでくれば、(2)(3)の問題も know94space さまのおっしゃるとおり、
> 多分、SQL文が空なのではないかと思います。だから、Query was Emptyと表示される・・・
> idの値が指定されていないためにSQL文が成立していない・・・
の問題解決も簡単でした。
今回、know94space さまの多方向からの問題切り分けにより、原因を突き止められたことは実に的確なご指摘で、また、デバックのコツまでご教授いただいたことに大変感激しています。
実は、3週間くらいハマっていて精根尽きて質問したところでした。
500文字しか質問できないので、もっと多くの情報を入れたかったのですが、これだけの少ない質問情報から問題解決の糸口を見つけてくださったことに感謝するばかりです。
function sjis2euc_for_Winodows のデバックはまだで、無事正常動作確認の途中経過のご報告です。
なんとお礼を申していいやら・・・。