使用MySQLi将PHP输入与数据库进行比较

时间:2017-11-26 20:49:45

标签: php mysql mysqli

我遇到代码问题。 假设检查输入名称是否与Name的数据库中的信息相同。

如果没有,它会输出不同的结果并将此信息添加到数据库中。

我的问题是,else中的代码永远不会起作用。它总是打印if的结果。

此外,当我尝试复制INSERT的代码时,如果它没有插入 数据库中的任何信息。

我做错了什么?我是php和mysql的新手

<!DOCTYPE HTML>  
<html>
<head>

<?php
// Load the configuration file containing your database credentials
require_once('config.inc.php');

// Connect to the database
$mysqli = new mysqli($database_host, $database_user, $database_pass, $database_name);

// Check for errors before doing anything else
if($mysqli -> connect_error) 
{
    die('Connect Error ('.$mysqli -> connect_errno.') '.$mysqli -> connect_error);
}

$name = $_GET["name"];
$email = $_GET["email"];

$mysqli->real_query("SELECT * FROM first_project WHERE Name = '$name'");

if ($mysqli->field_count > 0 ) 
{
echo "HAVE A GOOD DAY! $name";
echo "Your email is $email";
}
else
{
echo "Your were not part of the database, you and your data have been added $name";
$mysqli->query( "INSERT INTO first_project VALUES ('$name', '$email')");
}
$mysqli -> close();
?>
</body>
</html>

1 个答案:

答案 0 :(得分:0)

首先进行基本错误检查:

1检查错误日志以查看您的mysql是否引发了错误。

2验证两个变量是否存在(if(!empty(..))

3尝试INSERT INTO first_project(名称,电子邮件)VALUES(..,..)

4使用准备好的陈述。这是为了防止人们更改您的SQL查询导致安全问题(SQL注入)

您目前正在做的是如果名称存在,则回显用户发布的名称。您实际上并没有从数据库中检索任何内容(您只是检查是否有结果,不确定这是否是目的?)