2017-06-21 2 views
0

他の人がこれを尋ねてきたことを認識しています。mysqli_fetch_assoc()はmysqli_resultを期待しています。両方のテーブルが挿入されていますが、

私のsignup.inc.phpでは、ユーザーはuserテーブルとprofileImgテーブルに追加されています。 profileImgテーブルはステータス行を取り、ユーザが既にプロフィール画像をアップロードしたか否かを判定する。私のエラーログには、パラメータが1であると予想されるエラーが出ていると言われています。両方のテーブルが正しいデータで挿入されていますが、まだこのエラーが発生しています。どんな助けでも大歓迎です。ありがとうございました。

SIGNUP.INC.PHP:

<?php 
session_start(); 
include '../dbh.php'; 

$respond = array(
    'status' => true, 
    'message' => 'There was an error', 
    'redirect' => '../profile.php', 
    'errors', 
); 

if (isset($_POST['submit'])) { 

    $first = mysqli_real_escape_string($conn, $_POST['first']); 
    $last = mysqli_real_escape_string($conn, $_POST['last']); 
    $email = mysqli_real_escape_string($conn, $_POST['email']); 
    $pwd = mysqli_real_escape_string($conn, $_POST['pwd']); 

    $errorEmpty = false; 
    $errorEmail = false; 


if (empty($first) || empty($last) || empty($email) || empty($pwd)) { 

    $respond['errors'][] = "Please fill out all fields!"; 
    $respond['errorEmpty'] = true; 

} elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) { 

    $respond['errors'][] = "Please enter a valid email address!"; 
    $respond['errorEmail'] = true; 

} else { 

    $sql = "SELECT email FROM user WHERE email='$email'"; 
    $result = mysqli_query($conn, $sql); 
    $emailcheck = mysqli_num_rows($result); 


    if ($emailcheck > 0) { 
     $respond['errors'][] = "That email address already exists!"; 
     $respond['errorEmail'] = true; 
    } 



else { 
    $encryptpwd = password_hash($pwd, PASSWORD_DEFAULT); 
    $sql = "INSERT INTO user (first, last, email, pwd) 
    VALUES ('$first', '$last', '$email', '$encryptpwd')"; 
    $result = mysqli_query($conn, $sql); 

    $sql = "SELECT * FROM user WHERE email='$email' AND first='$first'"; 
    $result = mysqli_query($conn, $sql); 

    if (mysqli_num_rows($result) > 0) { 
     while ($row = mysqli_fetch_assoc($result)) { /////THIS IS WHERE IT SAYS I AM HAVING THE ERROR///// 
      $email = $row['email']; 
      $sql = "INSERT INTO profileImg (email, status) 
        VALUES ('$email', 1)"; 
        $result = mysqli_query($conn, $sql); 

     } 
    } 


    } 

} 
} 
echo json_encode($respond); 
?> 

答えて

0

私は前にこれをやりました。

$sql = "SELECT * FROM user WHERE email='$email' AND first='$first'"; 

最初のループがうまくいってから、2番目のループがうまくいっていますか? $ resultをループしながら、最後の行に$ resultを上書きするからです。

変更するには:

$sql = "INSERT INTO profileImg (email, status) 
      VALUES ('$email', 1)"; 
      $result2 = mysqli_query($conn, $sql); // $result2 
+0

おかげで多くの仲間。それはそれを解決した。私は将来のためにそれを書き留めます。 –

関連する問題