【问题标题】:Why MySQL database not update when I update something in PHP?为什么我在 PHP 中更新某些内容时 MySQL 数据库不更新?
【发布时间】:2020-09-18 05:28:35
【问题描述】:

我最近设置了一个 MySQL 服务器和一个 Apache 网络服务器来测试我的 Mysql 数据库。但有一个问题。 PHP不会更新MySql服务器,或者MySQL服务器不会更新。

我什至返回并从 W3Schools 复制和粘贴,这似乎没有任何作用。我做错了什么?

<?php
$servername = "127.0.0.1";
$username = "root";
$password = "password";
$dbname = "form_acceptance";

// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
  die("Connection failed: " . mysqli_connect_error());
}

$sql = "UPDATE MyGuests SET Player_name='Doe' WHERE id=2";

if (mysqli_query($conn, $sql)) {
  echo "Record updated successfully";
} else {
  echo "Error updating record: " . mysqli_error($conn);
}

mysqli_close($conn);
?>

MySql

CREATE DATABASE form_acceptance;
CREATE TABLE form_acceptance (
    PersonID int,
    Player_Name varchar(255),
    Countries varchar(255),
    Username varchar(255),
    Level_and_rank varchar(255),
    Max_BR varchar(255)
);
INSERT INTO form_acceptance (PersonID, Player_Name, Countries, Username, Level_and_rank, Max_BR)
SELECT 'SayByeBye_exe', 'SayByeBye_exe', 'US', '^GYMP^SayByeBye_exe', '12_Luitenant', '4.7';
select * FROM form_exceptance;

似乎没有任何效果。 PHP 不会将数据更新到 MySql 中。为什么不呢?

可能是因为我使用的是 Linux 吗?还是不行?

【问题讨论】:

  • $sql = "UPDATE MyGuests SET Player_name='Doe' WHERE id=2"; 你创建了 MyGuests 表吗?
  • 不,我没有。我已将其更改为表名,但仍然无法有所作为。但它是否应该显示在我的代码中?
  • 因为表中没有任何 id 列。 form_acceptance 表有多少条记录?您在此行中也有错字select * FROM form_exceptance;
  • @SaachiTech 是的,如何将记录添加到此表中?抱歉,我是 MySQL 和 SQL 的新手。
  • 架构和代码不匹配,这让整个事情变得非常混乱

标签: php mysql sql mysqli


【解决方案1】:

要执行查询,请确保表中至少有 2 条记录

$sql = "UPDATE MyGuests SET Player_name='Doe' WHERE id=2";

如果没有值为 2 的 id 则查询失败,因此请务必检查,除了最后一行的输入错误外,我没有看到任何其他错误

【讨论】:

  • 嗨。我需要一些关于添加 ID 的帮助,但我不知道该怎么做。
  • 要添加 ID,您需要插入它,请参阅:w3schools.com/sql/sql_insert.asp
  • @Ring_Games_Database_And_Coding |确保至少有 2 条记录,其中一条的 ID 应为 2
【解决方案2】:

您的设置有几个错误。您没有任何 MyGuests 表,因此我假设您要更新 form_acceptance 表。那么 form_acceptance 表没有任何 id 列,所以我们必须添加它或使用 PersonID 列。这是解决问题的代码 sn-p。

第一

请像这样更新您的 MySQL 表创建。这将使 PersonID 成为主要的自动增量列。

CREATE DATABASE form_acceptance;
CREATE TABLE form_acceptance (
    PersonID int NOT NULL AUTO_INCREMENT, //Notice we added NOT NULL AUTO_INCREMENT
    Player_Name varchar(255),
    Countries varchar(255),
    Username varchar(255),
    Level_and_rank varchar(255),
    Max_BR varchar(255),
    PRIMARY KEY (`PersonID `)//define PersonId as primary key
);

第二 插入几条记录

INSERT INTO form_acceptance (Player_Name, Countries, Username, Level_and_rank, Max_BR)
Values('Player_Name1', 'US', 'Username`', '12_Luitenant', '4.7'),
('Player_Name2', 'US', 'Username2', '12_Luitenant', '4.7');
select * FROM form_acceptance;//Will show you 2 records having PersonID 1 and 2

现在修复您的更新查询

<?php
$servername = "127.0.0.1";
$username = "root";
$password = "password";
$dbname = "form_acceptance";

// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
  die("Connection failed: " . mysqli_connect_error());
}

$sql = "UPDATE form_acceptance SET Player_name='Doe' WHERE PersonID=2";

if (mysqli_query($conn, $sql)) {
  echo "Record updated successfully";
} else {
  echo "Error updating record: " . mysqli_error($conn);
}

mysqli_close($conn);
?>

这将成功更新 PersonID 为 2 的第二行的记录。

【讨论】:

  • 由于 OP 的所有者是 MySQL 新手,我想添加一些我的 cmets。主键设置为auto_increment,因此在我们使用第二部分的查询插入数据时不会插入PersonID
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-24
  • 1970-01-01
  • 2018-10-15
  • 2020-09-20
  • 1970-01-01
  • 1970-01-01
  • 2012-05-31
相关资源
最近更新 更多