MYSQLにINSERTできません。
見よう見まねでやっている超初心者です。
恥を忍んで質問させて頂きます。
古いPHP(2003年ごろ)関連書籍に下記のような
include.phpファイルがあるのですが、DB接続失敗、クエリ発行エラー等の
エラー表示は出ないのですが(65行目位の、管理者パスワードチェック : _chkPass)でパスワードがMYSQLにINSERTできません。
PHPバージョンの違いなのでしょうか(私のはPHPV5 XAMPPです。)
色々試したりMYSQLの確認をしたのですが、どこがイケないのか、
どこをどう直したらいいのか全く分かりません。
このプログラムに不具合は無いのか?あったとしたらどう直したら動くようになるのか?
わかる方どうかご教授の程よろしくお願い致します。
具体的にご教授頂けると大変助かります。
<?php
putenv("TZ=JST-9");
define( "_DB_SERVER", "localhost");
define( "_DB_NAME", "cgiweb" );
define( "_DB_UID", "root" );
define( "_DB_PASS", "" );
//---------------------------------------------------------
// DB接続 : _dbConnect
//---------------------------------------------------------
function _dbConnect(){
//DB接続
$_conn = mysql_connect( _DB_SERVER, _DB_UID, _DB_PASS)
or die('DB接続失敗 = ' . mysql_error());
//DB選択
mysql_select_db( _DB_NAME, $_conn)
or die('DB選択失敗 = ' . mysql_error());
return( $_conn );
}
//---------------------------------------------------------
// DB切断 : _dbDisconnect
//---------------------------------------------------------
function _dbDisconnect( $_conn ){
//DB切断
mysql_close($_conn);
}
//---------------------------------------------------------
// クエリ発行 : _query
//---------------------------------------------------------
function _query( $_conn, $_query ){
$_result=mysql_query($_query,$_conn)
or die('クエリ発行エラー = ' .mysql_error());
return( $_result );
}
//---------------------------------------------------------
// FETCH実行 : _fetchArray
//---------------------------------------------------------
function _fetchArray( $_result ){
$_row = mysql_fetch_array($_result,MYSQL_ASSOC);
return( $_row );
}
//---------------------------------------------------------
// 結果セット開放 : _freeResult
//---------------------------------------------------------
function _freeResult($_result){
mysql_free_result($_result);
}
//---------------------------------------------------------
// 管理者パスワードチェック : _chkPass
// 引数:コネクション
// チェック対象パスワード
// 戻値:_OK or _NG
//---------------------------------------------------------
function _chkPass( $_conn, $_input_pass ){
$_err_str = "";
if( ! $_input_pass ){
//パスワード未設定なら入力画面を表示
$_err_str = "パスワードを入力してください";
}
else{
//パスワードがあるなら店舗マスタの内容と比較
$_result = _query( $_conn, "SELECT tenpo_pass FROM tenpo_mst" );
$_row = _fetchArray( $_result );
if( $_row ){
//レコードがあればチェック
if( $_input_pass != $_row['tenpo_pass'] ){
//認証NGなので、入力画面を再表示
$_err_str = "パスワードが誤っています";
}
}else{
//レコードがなければ入力されたパスワードでレコード作成
$_sql = "";
$_sql .= "INSERT INTO tenpo_mst (";
$_sql .= " tenpo_name,";
$_sql .= " tenpo_pass,";
$_sql .= " zei_kbn,";
$_sql .= " zeiritsu,";
$_sql .= " zei_kirisute_kbn,";
$_sql .= " order_status";
$_sql .= " ) VALUES (";
$_sql .= " '',";
$_sql .= " '" . addslashes($_input_pass) . "',";
$_sql .= " 2,";
$_sql .= " 0,";
$_sql .= " 0,";
$_sql .= " 0";
$_sql .= " )";
_query( $_conn, $_sql );
}
_freeResult( $_result );
}
//入力画面表示の場合
if( $_err_str != "" ){
echo "<HTML>\n";
echo "<HEAD>\n";
echo "<TITLE>管理者認証</TITLE>\n";
echo "</HEAD>\n";
echo "<BODY>\n";
echo "<CENTER>\n";
echo "<FONT COLOR=RED SIZE=5>管理者認証</FONT>\n";
echo "<HR>\n";
echo "${_err_str}<BR><BR>\n";
echo "<FORM ACTION=\"mnt_menu.php\" METHOD=\"POST\">\n";
echo "<FONT COLOR=RED SIZE=2>※記号を除く半角小文字8文字以内</FONT><BR>\n";
echo "パスワード:<INPUT TYPE=\"password\" NAME=\"post_pass\" MAXLENGTH=8>\n";
echo "<INPUT TYPE=\"submit\" VALUE=\"送信\">\n";
echo "</FORM>\n";
echo "<HR>\n";
echo "</CENTER>\n";
echo "</BODY>\n";
echo "</HTML>\n";
_dbDisconnect($_conn);
exit;
}
}
?>
以下省略しました。
補足
解答ありがとうございます。 フィールドは確かに実在しているものです。 さきほど while($row = $result->fetchRow()){ echo $row[0]; // 返却データをループ } $result->free(); と書き換えてみたのですが、やはり同じでした。 何が原因なのか、さっぱり分かりません・・・。