前提・実現したいこと
フォームで受け取った$_POST['email']から
テーブルのuserdata内にあるemailの数を出力したい
0以上なら(テーブル内に同じemailが登録されているなら)登録させないアカウント登録機能を作成予定
発生している問題
ある理由からprepareを使ったサーチ方法の関数に移行することになったが、
リターンがint(0)になってしまう
→関数内でリターンする値を確認するためにvar_dump($num)を関数内に記入しているが、int(0)という結果になる
テーブル内をターミナルで確認しても$_POST['email']で受け取っているemailは登録されている
int(0)
該当のソースコード
PHP
1function searchUserdata($link, $string) 2{ 3 $stmt = mysqli_prepare($link, 'SELECT COUNT(*) FROM userdata WHERE ?=?'); 4 5 mysqli_stmt_bind_param($stmt, "ss", $string, $_POST['email']); 6 7 mysqli_stmt_execute($stmt); 8 9 $result = mysqli_stmt_bind_result($stmt, $num); 10 11 if (!$result) { 12 error_log('Error: fail to count userdata'); 13 error_log('Debugging Error:' . mysqli_error($link)); 14 return; 15 } 16 17 mysqli_stmt_fetch($stmt); 18 19 var_dump($num); 20 21 mysqli_stmt_close($stmt); 22 23 return $num; 24}
###うまくいっている方の処理
PHP
1function searchEmail($link) 2{ 3 $emails = []; 4 5 $sql = sprintf( 6 'SELECT COUNT(*) AS cnt FROM userdata WHERE email="%s"', 7 mysqli_real_escape_string($link, $_POST['email']) 8 ); 9 $result = mysqli_query($link, $sql); 10 11 if (!$result) { 12 error_log('Error: fail to count userdata'); 13 error_log('Debugging Error:' . mysqli_error($link)); 14 return; 15 } 16 17 $emails = mysqli_fetch_assoc($result); 18 19 return $emails; 20}
補足情報(FW/ツールのバージョンなど)
PHP7.4
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/11 09:33