我正在创建一个电子邮件注册表单,我正在检查以确保用户尝试放入的内容没有重复。
我有一个用$ numRows检查的SQL查询,如果结果为none,那么我可以继续。
我用连接变量播放了音乐椅,它引用了数据库连接脚本(我希望保持外部化),并且我将该变量用作任何SQL查询函数中的第一个参数。但是我仍然得到描述的错误。我已经看到一个答案,据说我应该在SQL语句之前包含我的数据库连接变量(引用连接脚本),但这不起作用(或有意义)。但我有
<?php
$name = "";
$email = "";
$msg_to_user = "";
if ($_POST['name'] != "") {
include_once "connect-script.php";
$name = $_POST['name'];
$email = $_POST['email'];
$sql = mysqli_query($db_connection_variable, "SELECT * FROM lagente WHERE email='$email'");
$numRows = mysqli_num_rows($db_connection_variable, $sql);
if (!$email) {
$msg_to_user = '<br /><br /><h4>Please enter your email address ' . $name . '.</h4>';
} else if ($numRows > 0) {
$msg_to_user = '<br /><br /><h4><font color="FF0000">' . $email . ' is already here</font></h4>';
} else {
$sql_insert = mysqli_query($db_connection_variable, "INSERT INTO table-name (name, email, dateTime)
VALUES('$name','$email',now() )") or die (mysqli_error());
$msg_to_user = '<br /><br /><h4>Thanks ' . $name . ', we will send you news when appropriate. Take care!</font></h4>';
$name = "";
$email = "";
}
}
?>
这些是错误:
警告:mysqli_query()要求参数1为mysqli,resource 在第13行的/home/www/home/www/path/to/file.php中给出
警告:mysqli_num_rows()正好需要1个参数,2中给出 第14行/home/www/home/www/path/to/file.php
警告:mysqli_query()要求参数1为mysqli,resource 在第27行的/home/www/path/to/file.php中给出
警告:mysqli_error()正好需要1个参数,给出0 第27行/home/www/home/www/path/to/file.php
答案 0 :(得分:0)
这有效:
include_once "connect-script.php";
// No SQL injections welcome :-(
$name = $_POST['name'];
$email = $_POST['email'];
$sql = mysqli_query($db_connection_variable, "SELECT * FROM table WHERE email='$email'");
$numRows = mysqli_num_rows($sql);
if (!$email) {
$msg_to_user = '<br /><br />Please enter your email address ' . $name . '.</font></h4>';
} else if ($numRows > 0) {
$msg_to_user = '<br /><br />' . $email . ' is already in </font></h4>';
} else {
$sql_insert = mysqli_query($db_connection_variable, "INSERT INTO table (name, email, signedUpOn) VALUES('$name','$email',now() )") or die (mysqli_error($db_connection_variable));
$msg_to_user = '<br /><br />Thanks ' . $name . ', we will send you news when appropriate. Take care!</font></h4>';
$name = "";
$email = "";
}
}
?>
事实证明$ db_connection_variable只作为mysqli查询的第一个参数,而不是传递到$ numRows = mysqli_num_rows($ db_connection_variable,$ sql)。它必须是任何mysqli数据库函数中的第一个参数。该脚本现在正常工作...收集电子邮件地址在黑色星期五和黑色星期五发送垃圾邮件;-) - 当然,没有垃圾邮件。