2015-03-02 108 views
0

我不知道为什么我的代码似乎没有工作。我想检查数据库中是否存在电子邮件,如果不存在,请继续注册。代码如下:PHP准备好的语句 - MySQL检查用户是否存在

if (empty($errors)) { //Using Prepared Statements 
// Connect to the database: 
$dbc = mysqli_connect ('localhost','root', 'pass', 'book_store'); 
$q = "SELECT user_id FROM users WHERE email=?"; 
$stmt = mysqli_prepare($dbc, $q); 
mysqli_stmt_bind_param($stmt, 'i', $email); 
    mysqli_stmt_execute($stmt); 
$result = mysqli_stmt_get_result($stmt); 
$num_rows = mysqli_num_rows($result); 


if ($num_rows == 0) { //Check if email exists 
$q = 'INSERT INTO users(first_name, last_name, state, email) VALUES (?, ?, ?,  ?)'; 
$stmt = mysqli_prepare($dbc, $q); 
mysqli_stmt_bind_param($stmt,'ssss', $fn, $ln,$state, $email); 
mysqli_stmt_execute($stmt); 

// Closee statement: 
mysqli_stmt_close($stmt); 

// Close the connection: 
    mysqli_close($dbc); 

} else { 
echo '<h1>email exists</h1>'; 
} 
} 
else { 
echo '<p>The Errors Occurred:<br />'; 
foreach ($errors as $msg) { 
    echo " - $msg<br />\n"; 
} 
echo '</p><p>Please Try Again.</p>'; 
} 
} 
+0

'似乎没有工作 - 请定义这个。 – sectus 2015-03-02 05:43:23

回答

2

您已经给出i,它代表int类型的变量。尝试使用s来替换它,如下所示。 $q = "SELECT user_id FROM users WHERE email=?"; $stmt = mysqli_prepare($dbc, $q); mysqli_stmt_bind_param($stmt, 's', $email);

+0

它的工作!该死的我浪费了4个小时... – Sam 2015-03-02 06:00:39

+0

如果有效,请接受答案。 – Shameer 2015-03-02 06:49:01