php 中的查询不起作用


Query within php isn't working

我对php和mysql不是很有经验。计划是创建一个文本框,在这个文本框中你可以写任何你想写的东西。然后,文本框中的文本将更新到数据库。

它说错误在这一行内:

$sql = "UPDATE members SET tekst='$_POST['chat']' WHERE id='$_SESSION['id']'";

此行位于下一个代码中:

<?php
    error_reporting(0);
    session_start();
    if(!session_is_registered(gebruikersnaam))
        {
            header("location:form.php");
        }
?>
<?php
    if ($_SERVER['REQUEST_METHOD'] == 'POST')
    {
        $servername = "mysql.hostfree.nl";
        $username = "u411684910_info";
        $password = "rsg2015";
        $dbname = "u411684910_note";
        $conn = mysql_connect($servername, $username, $password, $dbname);
        $sql = "UPDATE members SET tekst='$_POST['chat']' WHERE id='$_SESSION['id']'";
        if (!$conn) 
        {
            die("Connection failed: " . mysql_connect_error());
        }
        if (mysqli_query($conn, $sql))
        {
            echo "New record created successfully";
            echo $_SESSION["id"];
        } 
        else 
        {
            echo "Error: " . $sql . "<br>" . mysql_error($conn);
        }
        mysql_close($conn);
    }
    else
    {
?>
        <form action="succes.php" method="POST">
            <input type="text" name="chat">
            <input type="submit" value="Submit">
        </form>
<?php
    }   
?>

提前感谢,

吉翁

不要使用 mysql_query。它已被弃用。但是试试这个:

$chat = mysql_real_escape_string($_POST['chat']);
$id = $_SESSION['id'];
$sql = "UPDATE members SET tekst = '$chat' WHERE id = '$id'";

Gyon,

看来问题确实出在以下行上:

$sql = "更新成员设置 tekst='$_POST['聊天']' 其中 id='$_SESSION['id']'";

正是引号的问题:

tekst='$_POST['chat']' WHERE id='$_SESSION['id']'

您需要将其更改为如下所示的内容:

$sql = 'UPDATE members SET tekst="$_POST['chat']" WHERE id="$_SESSION['id']"';

或者,我建议有以下几点:

$chat = $_POST["聊天"];

$sessionId = $_SESSION['id'];

$sql = "更新成员设置 tekst='$chat' 其中 id='$sessionId'";

你的代码中有很多差异需要提及,但是,首先要做的是。请注意引号。

"UPDATE members SET tekst='".$_POST['chat']."' WHERE id='".$_SESSION['id']."'";

这将在您的文本编辑器中看起来更具可读性。

正如其他人提到的,不要再使用 mysql 扩展了。

使用更安全的Mysqli或PDO,因为它们具有转义功能,PDO会为您转义字符串。

我认为您应该将以下值添加到变量中

 $session = mysqli_real_escape_string($_SESSION["id"]);
 $chat = mysqli_real_escape_string($_POST['chat']);

然后查询

$sql = "UPDATE members SET tekst='$chat' WHERE id='$session'";