使用PHP更新mysql数据

使用PHP更新mysql数据,php,mysql,sql,database,Php,Mysql,Sql,Database,我正在尝试在我的主页上显示网站标题。此网站标题存储在名为mywebsite的数据库和表settings中。我想用输入类型text的值来更新它。标题显示得非常完美,但当我在文本字段中写入内容并提交时,数据库不会更新。我认为我做的一切都是对的,在我的页面上没有显示任何错误,但它仍然不起作用。有人能找出错误吗? 这是我的密码: <?php // Some database detail $host = 'localhost'; $username = 'root'; $password = ''

我正在尝试在我的主页上显示网站标题。此网站标题存储在名为
mywebsite
的数据库和表
settings
中。我想用
输入类型text
的值来更新它。标题显示得非常完美,但当我在文本字段中写入内容并提交时,数据库不会更新。我认为我做的一切都是对的,在我的页面上没有显示任何错误,但它仍然不起作用。有人能找出错误吗?
这是我的密码:

<?php
// Some database detail
$host = 'localhost';
$username = 'root';
$password = '';
$database = 'mywebsite';
// Making connection
$con = mysqli_connect($host, $username, $password, $database);

// Making a sql query for "Website Title" and saving it in variable $query
$query = "SELECT * FROM settings WHERE NameOfSetting='Website Title'";

// Applying query
$result = mysqli_query($con, $query);

// Fetching data from database
$row = mysqli_fetch_array($result);

if (isset($_POST['submit'])) {
    $title = $_POST['text'];
    mysqli_query($con, "UPDATE settings SET TheSetting=$title WHERE NameOfSetting='Website Title'");
}
?>

<h1><?php echo $row['TheSetting']; ?></h1>

<form method="POST">
    <input type="text" placeholder="Change the title" name="text">
    <input type="submit" name="submit">
</form>

您可以随时进行某种类型的错误检查。即使用或死亡(mysqli_错误)


这至少会让你知道你的问题是什么。每次连接、查询或关闭数据库时,请使用此错误检查方法。

使用此代码,它将解决您的问题。

  <?php
    // Some database detail
    $host = 'localhost';
    $username = 'root';
    $password = '';
    $database = 'mywebsite';
    // Making connection
    $con = mysqli_connect($host, $username, $password, $database)or die(mysqli_error());

    // Making a sql query for "Website Title" and saving it in variable $query
    $query = "SELECT * FROM settings WHERE NameOfSetting='Website Title'";

    // Applying query
    $result = mysqli_query($con, $query);

    // Fetching data from database
    $row = mysqli_fetch_array($result);

    if (isset($_POST['submit'])) {
        $title = $_POST['text'];
        mysqli_query($con, "UPDATE settings SET TheSetting='".$title."' WHERE NameOfSetting='Website Title'");
    }
    ?>

    <h1><?php echo $row['TheSetting']; ?></h1>

    <form method="POST">
        <input type="text" placeholder="Change the title" name="text">
        <input type="submit" name="submit">
    </form>
这行:

设置设置=$title

$title
需要用引号括起来:


设置设置=“$title”

旁注:您可能还想更改此行(作为安全预防措施):

致:

试一试

mysqli_query($con, "UPDATE settings SET TheSetting='$title' WHERE NameOfSetting='Website Title'");

SET TheSetting='$title'
您在更新之前选择的,因此
将始终是旧值,而不是新值。在你选择Fred ii之前,移动你的
更新
-你是老板,你有问题了,谢谢。不客气@user41510这仍然是错误的<代码>“更新设置设置设置=”.$title。“其中…
与更新设置设置设置=$title其中…
相同。问题是OP需要引用值->
'$title'
ya我纠正了我犯的愚蠢错误。我使用了双引号而不是单引号,但是现在您需要删除点
。$title.
->
'$title'
,或者将双引号添加回->
'.$title.'
中,
或者死亡(mysql_error())应该是
或die(mysqli_错误($con))
->
mysqli
vs
mysql
对不起,我只是想帮忙。我明白。您当前正在将
mysqli.*
mysql.*
--
mysql.\u错误
应理解为
mysqli.\u错误
;-)注意-
mysqli\u错误
需要连接链接标识符->
mysqli\u错误($con)
嘿,我是初学者。并试图找出
cms
是如何制作的。你能指引我吗。这就是如何通过前端进行永久性更改的概念吗?或者这是一种不好的做法?请指导我,我15岁了,开始学习php!哦,天哪,我希望我能帮上忙,但我对CMS的@user41510几乎一无所知。我对我所做的一切都进行了硬编码。另外,看到这解决了你的问题,点击白色复选标记,直到它变为绿色,做为接受标记@我们可以结束这个问题。为了回答您的问题,SQL就是这样工作的。一旦数据库被(成功地)更新,它就会一直更新到再次更新为止,所以基本上就是这样做的@你也可以看看哪种方法更安全。嘿,我是个初学者。并试图弄清楚cms是如何制作的。你能指引我吗。这就是如何通过前端进行永久性更改的概念吗?或者这是一种不好的做法?请指导我,我15岁了,开始学习php!
$title = $_POST['text'];
$title = mysqli_real_escape_string($con,$_POST['text']);
mysqli_query($con, "UPDATE settings SET TheSetting='$title' WHERE NameOfSetting='Website Title'");