我在我的网站中使用了一个php部分,我有一个textarea从数据库中获取文本。用户可以编辑此文本,完成后按保存按钮,使用UPDATE我将更改数据库中的文本。 这是我的代码:
<?php
$con=mysqli_connect("localhost","userdb","codedb","projectdb");
mysqli_set_charset($con, 'utf8');
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$myQueryfac="SELECT text FROM main WHERE id=1";
$result = mysqli_query($con,$myQueryfac);
while($row = mysqli_fetch_array($result)) {
$t1=$row['text'];
}
$form="<form action='adminindex.php' method='post'>
<textarea name='area1' maxlength='1500' cols='50' rows='10'>$t1</textarea>
<input type='submit' name='enter' value='Save'>
</form>";
if($_POST['enter']) {
$t1=$_POST['area1'];
mysqli_query($con,"UPDATE main SET text='$t1' WHERE id='1'");
}
echo $form;
mysqli_close($con);
?>
我的问题是在UPDATE查询中,它似乎忽略了$ t1并且数据库中没有任何变化。但是,如果我在那里随意放置一些东西,“RANDOM TEXT”,请将其改为成功。
答案 0 :(得分:1)
您就是这样做的:
<强> test.php的强>
// DB Connect
$con=mysqli_connect("localhost","userdb","codedb","projectdb");
mysqli_set_charset($con, 'utf8');
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
// Handle POST
if (count($_POST))
{
// Save In DB
mysqli_query($con, sprintf("UPDATE main SET `text`='%s' WHERE id=%d",
mysqli_real_escape_string($con, $_POST['area1']),
1)); // id
// Success
echo "<p>Data updated.</p>";
}
// Load Existing Data
$myQueryfac="SELECT `text` FROM main WHERE id=1";
$result = mysqli_query($con, $myQueryfac);
$row = mysqli_fetch_array($result);
// Display Form
echo "<form action='test.php' method='post'>
<textarea name='area1' maxlength='1500' cols='50' rows='10'>". $row['text'] ."</textarea>
<input type='submit' name='enter' value='Save'>
</form>";
// DB Close
mysqli_close($con);
?>
id
视为字符串,我将其格式化为数字(%d
)sprintf
和mysqli_real_escape_string
)text
周围添加了反引号“(不确定这是否是保留字,因为它是sql数据类型之一)答案 1 :(得分:0)
尝试
mysqli_query($con,"UPDATE main SET text='$t1' WHERE id=1");
相反
mysqli_query($con,"UPDATE main SET text='$t1' WHERE id='1'");
可能是带来问题的WHERE条件
答案 2 :(得分:0)
您正在检查$_POST
数组中是否存在值。 enter
是您的提交按钮,不会发送值。
试试这个:
if($_POST['area1']) {
$t1=$_POST['area1'];
mysqli_query($con,"UPDATE main SET text='$t1' WHERE id='1'");
}