更新功能:语法错误,意外T_ENCAPSED_AND_WHITESPACE,期待T_STRING或T_VARIABLE或T_NUM_STRING

时间:2014-05-15 08:51:26

标签: php sql-update

我想放置更新功能。 我已经制作了一个表格,所以在用户改变了他想要的一切之后,他就可以在#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';
}

2 个答案:

答案 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_*函数使用PDOmysqli_*

答案 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'");