2017-06-21 3 views
0

Ich weiß, dass andere dies gefragt haben und ich habe versucht, es mit Antworten auf andere ähnliche Fragen zu lösen, aber ich kann mein Problem nicht lösen.mysqli_fetch_assoc() erwartet, dass Parameter 1 mysqli_result ist, beide Tabellen werden eingefügt

In meiner signup.inc.php werden Benutzer der Benutzertabelle und der profileImg-Tabelle hinzugefügt. Die profileImg-Tabelle übernimmt die Statuszeile und ermittelt, ob ein Benutzer bereits ein Profilbild hochgeladen hat oder nicht. In meinem Fehlerprotokoll heißt es, dass ich einen Fehler erhalte, der erwartet, dass der Parameter 1 ist. Beide Tabellen werden mit korrekten Daten eingefügt, aber ich erhalte immer noch diesen Fehler. Jede Hilfe würde sehr geschätzt werden. Vielen Dank.

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); 
?> 

Antwort

0

Ich habe das schon mal gemacht. Sie erhalten wahrscheinlich mehr als ein Ergebnis von

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

Die erste Schleife geht gut, dann ist der zweite Buggy hoch, richtig? Das liegt daran, dass Sie $ result in Ihrer letzten Zeile überschreiben, während Sie $ result durchlaufen.

Wechseln zu:

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

Dank viel Kumpel. das hat es gelöst. Ich werde das für die Zukunft notieren. –

Verwandte Themen