2015-11-09 44 views
0

請考慮下面的代碼。 我想讀取持有人陣列上的電子郵件, ,但是當我嘗試訪問$持有人['email']時,它失敗。 我想用數據庫中的舊電子郵件檢查新輸入的電子郵件。 這裏是代碼:下面的代碼閱讀數組內

$conn = mysqli_connect("localhost", "root", "" ,"note_db"); 
if (!$conn) { 
    die("Connection failed: " . mysqli_connect_error()); 
} 
//echo "Connected successfully"; 

$email = $_REQUEST ['email']; 
$pass = $_REQUEST ['pass']; 
$result = mysqli_query($conn, "SELECT email FROM users"); 

$holder = array(); 

while($row = mysqli_fetch_array($result)){ 
    $record = array(); 

    $record ['email'] = $row['email']; 
    $holder [] = $record; 

} 

foreach($holder as $key => $hold){ 
    if($hold['email'] == $email){ 
     echo "email was set before"; 
     return; 
    }else{ 
     $sql = mysqli_query($conn,"INSERT INTO users VALUES ('$email', '$pass')") ; 
     echo "email Inserted to DataBase"; 

    } 
} 

mysqli_close($conn); 
+1

'$ holder [0] ['email'];' – aldrin27

+0

@ aldrin27它僅返回表中的最後一封電子郵件。 –

回答

2

試試這個:

$conn = mysqli_connect("localhost", "root", "" ,"note_db"); 
if (!$conn) { 
die("Connection failed: " . mysqli_connect_error()); 
} 
//echo "Connected successfully"; 

$email = $_POST ['email']; 
$pass = $_POST ['pass']; 
$result = mysqli_query($conn, "SELECT email FROM users"); 

$holder = array(); 
while($row = mysqli_fetch_array($result)){ 
$holder [] = $row; 
} 
foreach($holder as $val){ 
    if($val['email']==$email){ 
     echo "email was set before"; 
     return FALSE; 
    } 
    else{ 
     $sql = mysqli_query($conn,"INSERT INTO users VALUES ('$email', '$pass')") ; 
     echo "email Inserted to DataBase"; 
    } 
} 


mysqli_close($conn); 
0

使用[ '電子郵件']不存在。要獲得所有在$ foo的電子郵件,你應該循環它

編輯:像如何建議@沙希德艾哈邁德 foreach($holder as $h) { echo $h['email']; }

+0

感謝您的relpy.but當我使用它,它返回這個錯誤7次(我有7行):注意:未定義的偏移量:第33行中的0,注意:未定義的偏移量:第33行和... –

+0

我請更新我的代碼,請現在檢查 –

+0

Thanks.But如果我們不使用$ key,我們會得到相同的結果。我認爲沒有必要。 –

0

這是beceause $持有者

$conn = mysqli_connect("localhost", "root", "" ,"note_db"); 
if (!$conn) { 
die("Connection failed: " . mysqli_connect_error()); 
} 
//echo "Connected successfully"; 

$email = $_REQUEST ['email']; 
$pass = $_REQUEST ['pass']; 
$result = mysqli_query($conn, "SELECT email FROM users"); 

$holder = array(); 

while($row = mysqli_fetch_array($result)){ 
$record = array(); 

$record ['email'] = $row['email']; 
$holder [] = $record; 

} 

if($holder['email'] == $email){ 
    echo "email was set before"; 
    return; 
} 
else{ 
    $sql = mysqli_query($conn,"INSERT INTO users VALUES ('$email', '$pass')") ; 
    echo "email Inserted to DataBase"; 

} 

mysqli_close($conn); 
+0

謝謝,但我該怎麼做? –

+0

請澄清您的答案。 – hotzst

+0

完成,希望它可以幫助 – P4ncake

0

如果你想只檢查是否電子郵件已經被佔用,那麼你可以使用布爾標誌達到同樣的效果。此外,考慮使用PDO或準備語句。此外,明確的設定,如果你將值從$ _POST或$ _GET。

$conn = mysqli_connect("localhost", "root", "" ,"note_db"); 
if (!$conn) { 
    die("Connection failed: " . mysqli_connect_error()); 
} 
//echo "Connected successfully"; 

$email = $_POST['email']; //Or $_GET 
$pass = $_POST['pass']; //Or $_GET 
$result = mysqli_query($conn, "SELECT email FROM users"); 

$found = false; //Boolean to check if email is already taken 

while($row = mysqli_fetch_array($result)) { 
    if ($row['email'] == $email) { //If email exists in database 
     $found = true; 
     break; 
    } 
} 

if ($found) { //If email exists in database 
    echo "email was set before"; 
    return; 
} else { //Email doesn't exist so inset, Consider using prepared statements 
    $sql = mysqli_query($conn, "INSERT INTO users VALUES ('$email', '$pass')") ; 
    echo "email Inserted to DataBase"; 
} 

mysqli_close($conn); 
+0

謝謝親愛的,它的工作用於查找使用的電子郵件。但實際上我想知道,我如何可以讀取$持有人陣列內。 –