如何将参数放在PHP中的mysqli查询中

时间:2016-08-28 00:55:15

标签: php mysqli

我正在创建一个电子邮件注册表单,我正在检查以确保用户尝试放入的内容没有重复。

我有一个用$ 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

1 个答案:

答案 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数据库函数中的第一个参数。该脚本现在正常工作...收集电子邮件地址在黑色星期五和黑色星期五发送垃圾邮件;-) - 当然,没有垃圾邮件。