使用 PHP 将数据插入 MySQL 数据库时出现问题

Posted

技术标签:

【中文标题】使用 PHP 将数据插入 MySQL 数据库时出现问题【英文标题】:Problem inserting data into MySQL db with PHP 【发布时间】:2021-07-01 23:36:02 【问题描述】:

我正在制作一个用户输入数据的应用程序,这些数据被插入到数据库中,稍后显示给其他用户。问题是我无法将数据插入数据库。我已经用数据库制作了一个应用程序,但现在它不起作用。最糟糕的是我没有收到任何错误,因此它成功连接到数据库,只是没有插入数据库。数据通过 POST 方法从 html 表单发送到 php 脚本。

这是我的代码:

<?php

$DATABASE_HOST = 'localhost';
$DATABASE_USER = 'root';
$DATABASE_PASS = '';
$DATABASE_NAME = 'mydb';

$con = mysqli_connect($DATABASE_HOST, $DATABASE_USER, $DATABASE_PASS, $DATABASE_NAME);
if (mysqli_connect_errno()) 
    exit('Failed to connect to MySQL: ' . mysqli_connect_error());



$stmt = $con->prepare("INSERT INTO matches (username, uid, level, timestamp) VALUES (?, ?, ?, ?)");
$timestamp = time();
$stmt->bind_param('sssi', $_POST['username'], $_POST['uid'], $_POST['level'], $timestamp);

$stmt->close();
$con->close();
?>

这里有一些 SQL 语句来复制我的数据库:

-- phpMyAdmin SQL Dump
-- version 5.0.2
-- https://www.phpmyadmin.net/
--
-- Host: 127.0.0.1:3306
-- Generation Time: Apr 06, 2021 at 07:18 AM
-- Server version: 5.7.31
-- PHP Version: 7.3.21

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Database: `mydb`
--

-- --------------------------------------------------------

--
-- Table structure for table `matches`
--

DROP TABLE IF EXISTS `matches`;
CREATE TABLE IF NOT EXISTS `matches` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(50) NOT NULL,
  `uid` varchar(255) NOT NULL,
  `level` varchar(100) NOT NULL,
  `timestamp` timestamp(6) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
COMMIT;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

有人可以帮助我吗,我一直在寻找问题近两天,这让我发疯!????

【问题讨论】:

【参考方案1】:

如果你添加

$stmt->execute();

那么它应该可以工作或显示你和错误:)

基本上您正在准备查询,但查询未执行,因为您正在关闭连接

【讨论】:

谢谢,在我的测试中,我多次更改了我的代码,当它不是导致问题的原因时,它是另一个...... @Noé 所以你承认这根本不是真正的问题? @Your Common Sense 因为我不知道问题是什么,我不知道问题是什么,但答案解决了问题。我只是说我迷失了所有的代码版本,而且我混合了很多。

以上是关于使用 PHP 将数据插入 MySQL 数据库时出现问题的主要内容,如果未能解决你的问题,请参考以下文章

在 PHP 中插入 MySQL 表时出现语法错误 [重复]

Java - 使用 JDBC 连接到在线 MySQL 数据库时出现问题

将行插入 MySQL 表时出现 pymysql.err.ProgrammingError 错误(使用 Python、Flask、ClearDB)

Dapper.SimpleCRUD mysql 插入数据时出现的小插曲

插入大量数据时出现 mod_python/MySQL 错误:“OperationalError: (2006, 'MySQL server has gone away')”

在 MS Access (VBA) 中使用 ADODB 将非 ASCII 插入 MySQL 数据库时出现“不正确的字符串值”,但重试有效