简体   繁体   中英

UPDATING mysql data using PHP

I am trying to display a Website Title on my Home Page. This website title is stored in the database named mywebsite and in table settings . I want to update this with an input type text 's value. The title is displayed perfectly but when I write something in the text field and submit it, the database doesn't update. I think I am doing everything right and there isn't any error displaying on my page, but still it is not working. Can anyone figure out the error?
Here's my code:

<?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>

When I enter any numbers in the field and then submit and refresh it works fine but it's only working with numbers not with alphabets. 当我在该字段中输入任何数字,然后提交并刷新它时,它工作正常,但仅适用于数字,而不适用字母。 I don't know why?

This line:

SET TheSetting=$title

$title needs to be wrapped in quotes:

SET TheSetting='$title'

Sidenote: You may also want to change this line ( as a security precaution ):

$title = $_POST['text'];

to:

$title = mysqli_real_escape_string($con,$_POST['text']);

Well you can always do some sort of error checking. Ie using or die(mysqli_error);

$con = mysqli_connect($host, $username, $password, $database)or die(mysqli_error);

This will atleast give you an idea of what your proplem is. Use this error checking method every time you connect, query, or close a database.

use this code it will solve your problem.

  <?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>

试试看

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM