PHP插入错误

标签 php mysql

我开始从 HTML、CSS 和 php 开始学习编码。我创建了一个基本表格来测试我的技能。但是,我被这个困住了。你能帮我吗?

我知道它对 SQL 注入(inject)是开放的,我只是想在编码方面提高自己,并将在现实生活中使用准备好的语句和参数化查询。

<?php

if ($_SERVER["REQUEST_METHOD"] == "POST") {

    $mysql_host = "";
    $mysql_username = "";
    $mysql_password = "";
    $mysql_database = "";

    $conn = new mysqli ($mysql_host, $mysql_username, $mysql_password, $mysql_database);

    $c_name = $_POST["club_name"]; 
    $c_league = $_POST["league"];
    $c_rank = $_POST["ranking"];
    $c_prank = $_POST["previous_rank"];

    $sql = "INSERT INTO `club_data` (`club_name`, `league`, `ranking`, `previous_rank`)
    VALUES ('$c_name', '$c_league, $c_rank, $c_prank);";
    mysqli_query($conn, $sql); 

    if ($conn->query($sql) === TRUE) {
        echo "kayit islendi";
    }
    else {
        echo "Error". $sql ."<br>". $conn->error;
    }
    $conn->close();
}
?>

List Names

每次我使用表单时都会收到此错误。

ErrorINSERT INTO...等

最佳答案

您的插入值周围缺少引号,这是固定的 sql:

$sql = "INSERT INTO `club_data` (`club_name`, `league`, `ranking`, `previous_rank`)
VALUES ('$c_name', '$c_league', '$c_rank', '$c_prank');"

每个值周围都缺少引号!

但是,这是在生产环境中进行数据库查询的一种不明智的方式。使用 mysqli_real_escape_string 清理您的字符串(您的每个变量都需要这种处理)或使用准备好的语句。

或者,您应该始终使用数据库的方式是通过 PDO 包装器。在这种情况下,您将使用:PDO::quote。 PDO 为最流行的数据库提供统一的接口(interface)。您可以在这里阅读更多关于 PDO 的信息:http://php.net/manual/en/book.pdo.php

编码人员更喜欢准备好的语句来净化他们的输入。然而,与在 php 中编写更多代码相比,这会导致与 mysql 服务器的额外通信。准备好的语句比普通查询更复杂,因为它们被缓存在 SQL 服务器上并经过预处理等待数据被使用,还有大量的问号使得代码很难阅读,特别是如果你开始在生产中工作并且有大量的问号要填写的列数。在这里您可以阅读有关准备好的语句的更多信息: https://dev.mysql.com/doc/refman/5.7/en/sql-syntax-prepared-statements.html

主要内容:

  • 永远、永远、永远不要将未经处理的数据保存到数据库中!!使用 mysqli_real_escape_stringPDO::quote 或准备好的语句,视情况而定。
  • 将准备好的语句用于创建它们的目的,而不仅仅是作为批发 sanitizer 工具,当您必须重复执行相同的查询时使用它们。特别是如果此查询不是插入,在这种情况下我建议您像这样进行批量插入:INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6), (7,8,9); 阅读更多:https://dev.mysql.com/doc/refman/5.7/en/insert.html这有一个警告,即带有插入值的 sql 的最大大小不应大于 max_allowed_pa​​cket 配置。

关于PHP插入错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49710151/

相关文章:

php - 将IP存入mysql数据库

PHP - 提取数组值(方括号与箭头符号)

php - Zend 中的循环资源依赖错误

javascript - wordpress ajax 调用单个帖子

java - 是否可以在 Java 中使用 SQOOP 从 MySQL 读取/写入 Hadoop 作业?

mysql - 添加外键时报错 'Table ' .\schema\table' already exists

php - 将 css 分配到一个 Twig 形式的类中

php - 查询中 “\” 和 “-” 的 mysql 结果为空

java - jpa 2.1 和新的 Date APi : YearMonth to Date Converter, MySQL 异常

mysql - SQL 查询和 php 出现问题