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

标签 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 检查错误日志,看看你的 mysql 是否抛出错误。

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

3尝试插入first_project(名称,电子邮件)VALUES(..,..)

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

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

关于php - 使用 MySQLi 将 PHP 输入与数据库进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47500884/

相关文章:

php - MySQL登录错误警告

php - 在不通过网络浏览器进行清理的情况下查看访问日志是否危险?

php - 通过 id 查找元素并将其内容替换为 php

mysql - 连接四个表

mysql - 字符长度大于实际长度

php - 多层MySQL查询?

php - 我应该学习 mysqli 还是 PDO?

php - 没有为 MySQLi 准备语句中的参数提供数据

php - 如何在 IIS 8.5 中从 Web PI 卸载 php 7.0

javascript - 如何从laravel Blade循环获取jQuery的变量类名