
日頃はデザイン関連の作業担当なのですが、、、、
データの重複チェック方法で
会員番号と店舗番号を入力するのですが 登録画面には
//会員番号重複チェック
if(Duplication_Check2("store_table","'".$kaiin_no."'",$tenpo_no)){
$err .= "会員NO「".$kaiin_no."」で店舗NO「".$tenpo_no."」は既に登録されています。<br />";
}
としてまして、重複のエラー表示をさせています。
重複チェックの関数定義では
//重複チェック2
function Duplication_Check2($kaiin_no,$tenpo_no){
global $db;
$sql = "select * from store_table where kaiin_no='".$kaiin_no."' and tenpo_no=".$tenpo_no;
$rst = pg_query($db,$sql);
if($rst){
if(pg_num_rows($rst) = 0){
return true;
}else{
return false;
}
}else{
return false;
}
}
としたのですが ここに文法エラーが出ます。
初心者の質問で恐縮なのですがどこをどうすればいいのでしょうか?
ご教授いただければ幸いです。
No.4ベストアンサー
- 回答日時:
> $sql = "select kaiin_no form store_table where kaiin_no = ".$kaiin_no;
> Warning: pg_query(): Query failed: ERROR: syntax error at or near "form" at character 17
あ! すみません。
form がまちがいです。 正しくは from です。
$sql = "select kaiin_no from store_table where kaiin_no = ".$kaiin_no;
ANo.3 は全部 form になってますね。。。
偉そうなことを書いておきながら面目ないです。。。
No.3
- 回答日時:
> 3行目あたりのところに問題があるようなのですが
$sql = "select kaiin_no form store_table".$kaiin_no;
where ~ の書き忘れでしょうか。
kaiin_no カラムが数値型で、kaiin_no の値が $kaiin_no と等しいレコードを
検索するのであれば以下のようになるかと思います。
$sql = "select kaiin_no form store_table where kaiin_no = ".$kaiin_no;
もしも kaiin_no カラムが文字型であればシングルクオートで囲みます。
$sql = "select kaiin_no form store_table where kaiin_no = '".$kaiin_no."'";
とりあえずこれで動くと思いますが、万が一おかしなデータが入ってくる可能性を考えて
やかましいことを言いますと、kaiin_no カラムが数値型の場合 $kaiin_no に数値
以外のものが入らないように別途入力チェックしてください。
文字型の場合適宜エスケープをしてください。
$sql = "select kaiin_no form store_table where kaiin_no = '".mysql_real_escape_string($kaiin_no)."'";
問題が起きた時は、echo $sql; などとして、できあがりのSQL文を点検してみましょう。
mysql コマンドや phpMyAdmin などから試しに実行してみるのも一手です。
> テーブル名 store_table 内に kaiin_no カラムがあります。
> kaiin_no に重複がないかを確認するためには以下の記述でいいのでしょうか?
kaiin_no を重複させない、ある会員番号を持つレコードを 2 行
以上存在させないということであれば、会員番号が一致のみの
チェックでよいと思います。
同じ会員番号で複数の店舗に所属することを許すなら、
当初に書いてあったように店舗番号まで含めてチェックする
必要があるかと思います。
この回答への補足
ご指導ありがとうございます。
$sql = "select kaiin_no form store_table where kaiin_no = ".$kaiin_no;
こちらを入れていましたが 下記エラーになります。
Warning: pg_query(): Query failed: ERROR: syntax error at or near "form" at character 17 in /usr/home/******/html/inc/scp.php on line 149
文法エラーのようなのですが、、、、
どこがまちがっているのでしょう??
とりあえず kaiin_no に重複がないかを確認したいのですが、、
引き続きご指導いただければ幸いです。
No.2
- 回答日時:
文法エラーは、次のようなメッセージではないでしょうか。
PHP Fatal error: Can't use function return value in write context in hogehoge.php on line 123
まずいのは下記の場所だと思います。
= なので代入になっています。
if(pg_num_rows($rst) = 0){
検索結果の行数が 0 (と等しい)か調べたいのだから、
if(pg_num_rows($rst) == 0){
もしくは、
if(pg_num_rows($rst) === 0){
でしょう。
それからPHPの文法「エラー」にはならないと思いますが、
重複チェック関数の定義では引数が 2 つなのに、
function Duplication_Check2($kaiin_no,$tenpo_no){
関数の呼び出しでは、引数を 3 つセットしています。
Duplication_Check2("store_table","'".$kaiin_no."'",$tenpo_no)
定義が間違っていなければ、
第 1 引数の "store_table" は関数内の $kaiin_no に入っています。
第2引数の "'".$kaiin_no."'" は関数内の $tenpo_no に入っています。
第3引数にセットした $tenpo_no は関数内では使われていません。
期待通りの動作をしないでしょう。
この回答への補足
ご指導ありがとうございます。
私なりに分かりやすくしてみました。
テーブル名 store_table 内に kaiin_no カラムがあります。
kaiin_no に重複がないかを確認するためには以下の記述でいいのでしょうか?
//重複チェック2
function Duplication_Check2($kaiin_no){
global $db;
$sql = "select kaiin_no form store_table".$kaiin_no;
$rst = pg_query($db,$sql);
if($rst){
if(pg_num_rows($rst) == 0){
return true;
}else{
return false;
}
}else{
return false;
}
}
3行目あたりのところに問題があるようなのですがどのように記述すればいいのでしょう?
ご多忙のところ恐縮ですがご教授くださいませ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
alter tableすると、処理が止ま...
-
ACCESS検索★ある文字を複数のフ...
-
Excel 2019 のピボットテーブル...
-
【続続】Access2002で連番のつ...
-
【Access】フォームで自動計算...
-
OCNのwebメールを開くとき、シ...
-
保存された情報として表示され...
-
再計算って出来ますか?
-
Accessで、複数のテーブルで随...
-
Accessのクエリでデータの入力...
-
accsessで顧客コードで氏名を呼...
-
どれがPrimary Key、ForeignKey...
-
datファイルからaccessにインポ...
-
下記の事を行うSQLがわかりませ...
-
Countと受付状態の表示に...
-
Access クロス集計クエリについて
-
デザインビューで、連結式 を...
-
Access2000 更新のタイミング?
-
カウントが出来ません
-
Vbaでアクセスからエクセルにリ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
列が存在しないと言われる
-
INSERTできるレコード数を制限...
-
長いSQL文を実行するには?
-
PostgreSQLで表結合+DELETEしたい
-
constraint と index の違い
-
0の除算
-
COPY時のtimestamp型について
-
動的に生成したカラムを使ったF...
-
DBから日付順に指定件数の削除...
-
INSERTできない
-
SQLite:項目が存在しない場合の...
-
powergres(postgres)にalter文...
-
■一番最初に値が入っている(Nul...
-
カラムのデフォルト値に16進数
-
フィールドから値を読み出す
-
PostgreSQLの「not null」制約...
-
alter tableすると、処理が止ま...
-
インデックスの張り方について
-
Excel 2019 のピボットテーブル...
-
「直需」の意味を教えてください
おすすめ情報