我想放置更新功能。 我已经制作了一个表格,所以在用户改变了他想要的一切之后,他就可以在#34; Save"并且此信息将更新。但是当我按下" Save"时,它不会保存任何内容并显示错误:
"语法错误,意外的T_ENCAPSED_AND_WHITESPACE,期待 V:\ home \ op \ www \ edit.php中的T_STRING或T_VARIABLE或T_NUM_STRING 第20行"
这是脚本,需要更新信息。 (我更新了你的建议)
<html>
<head>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<?
error_reporting(E_ALL|E_STRICT);
mysql_connect("localhost", "root", "") or die (mysql_error ());
mysql_select_db("university") or die(mysql_error());
$program = '".$_POST['program']."',
$code = '".$_POST['code']."',
$course = '".$_POST['course']."',
$form = '".$_POST['form']."',
$time = '".$_POST['time']."',
$price = '".$_POST['price']."',
$accreditation = '".$_POST['accreditation']."',
$department = '".$_POST['department']."',
$type = '".$_POST['level']."',
$type = '".$_POST['type']."',
$result = mysql_query("UPDATE news SET program='".$_POST['program']."', code='".$_POST['code']."', course='".$_POST['course']."', form='".$_POST['form']."', time='".$_POST['time']."', price='".$_POST['price']."', accreditation='".$_POST['accreditation']."', department='".$_POST['department']."', level='".$_POST['level']."', type='".$_POST['type']."' WHERE id='".$_POST['id']."'");
if ($result == true) {
echo "Данные успешно сохранены!";
}
else {
echo "Произошла ошибка, пожалуйста повторите попытку.";
}
表格(用户可以提供新信息)
<html>
<head>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div id="container">
<?php
mysql_connect("localhost", "root", "") or die (mysql_error ());
mysql_select_db("university") or die(mysql_error());
$res=mysql_query("SELECT * FROM news WHERE id=" . intval($_GET['id']) );
if($res !== false)
{
if(mysql_num_rows($res) > 0)
{
$news=mysql_fetch_assoc($res);
?>
<form id="form1" name="form1" method="post" action="edit.php">
<label>Название <input name="program" type="text" id="program" value="<?php echo $news['program'];?>" />
<br />
Код: <input name="code" type="text" id="code" value="<?php echo $news['price'];?>" />
Курс: <input name="course" type="text" id="course" value="<?php echo $news['course'];?>" />
Форма: <input name="form" type="text" id="form" value="<?php echo $news['form'];?>" />
Срок: <input name="time" type="text" id="time" value="<?php echo $news['time'];?>" />
Цена: <input name="price" type="text" id="price" value="<?php echo $news['price'];?>" />
Акредитация: <input name="accreditation" type="text" id="accreditation" value="<?php echo $news['accreditation'];?>" />
Кафедра: <input name="department" type="text" id="department" value="<?php echo $news['department'];?>" />
Уровень: <input name="level" type="text" id="level" value="<?php echo $news['level'];?>" />
Тип: <input name="type" type="text" id="type" value="<?php echo $news['type'];?>" />
</label>
<input name="id" type="hidden" id="id" value=”<?php echo $news['id']?>”/>
<input name="program" type="hidden" id="program" />
<p>
<label>
<input type="submit" name="Submit" value="сохранить" />
</label>
</p>
</div>
<?php
}
else
{
echo 'Нет новости с таким ID';
}
}
else
{
echo 'Ошибка запроса к DB';
}
答案 0 :(得分:2)
您需要更正查询变量的引用,并使用set
关键字尝试更改
$result = mysql_query("UPDATE news program='$_POST['program']', code='$_POST['code']', course='$_POST['course'], form='$_POST['form']', time='$_POST['time']', price='$_POST['price']', accreditation='$_POST['accreditation']', department='$_POST['department']', level='$_POST['level']', type='$_POST['type']' WHERE id='$id'");
到
$result = mysql_query("UPDATE news set program='".$_POST['program']."', code='".$_POST['code']."', course='".$_POST['course']."', form='".$_POST['form']."', time='".$_POST['time']."', price='".$_POST['price']."', accreditation='".$_POST['accreditation']."', department='".$_POST['department']."', level='".$_POST['level']."', type='".$_POST['type']."' WHERE id='$id'");
此外,如果您想在查询中使用您的seted变量,请使用
mysql_query("UPDATE news set program='$program', code='$code',
......等等
还使用mysql_real_escape_string()
来阻止sql注入
注意: - 停止使用mysql_*
函数使用PDO
或mysqli_*
答案 1 :(得分:2)
首先,您需要检查更新语法http://dev.mysql.com/doc/refman/5.0/en/update.html
表格更新以
完成Update table set col = 'someval'
我在查询中看不到SET
。
然后对于所有字符串值,必须用单引号
括起来您对sql注入更加开放,并开始使用mysqli的预处理语句 或PDO
但是在你的情况下,它应该如下,直到你学习preparedStatement
$result = mysql_query("UPDATE news set
program='".$_POST['program']."',
code='".$_POST['code']."',
course='".$_POST['course']."',
form='".$_POST['form']."',
time='".$_POST['time']."',
price='".$_POST['price']."',
accreditation='".$_POST['accreditation']."',
department='".$_POST['department']."',
level='".$_POST['level']."',
type='".$_POST['type']."'
WHERE id='$id'");