我对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'";