更新函数:语法错误,意外T_ENCAPSED_AND_WHITESPACE,期望T_STRING或T_VARIABLE或


update function: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING

我想把更新函数。我已经做了一个表单,所以用户将改变他想要的一切,他可以在"保存"和这个信息将被更新。但当我按下"保存",它不保存任何东西,并显示错误:

"语法错误,意想不到的T_ENCAPSED_AND_WHITESPACE,期待T_STRING或T_VARIABLE或T_NUM_STRING在V:'home'op'www'edit.php on第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';
}

首先需要检查更新语法http://dev.mysql.com/doc/refman/5.0/en/update.html

表更新以

方式完成
Update table set col = 'someval'

我在查询中没有看到SET

对于所有字符串值,必须用单引号

括起来

更进一步,你是开放的sql注入,并开始使用mysql准备语句或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'");

您需要更正查询变量的引用并使用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'");

如果你想在查询中使用你设置的变量,那么使用

mysql_query("UPDATE news set program='$program', code='$code',

…等等

还使用mysql_real_escape_string()来防止sql注入

注释:-停止使用mysql_*函数,使用PDOmysqli_*