使用PHP更新sql数据库时出现问题

时间:2011-01-24 06:07:21

标签: php mysql database textfield

我在PHP中使用UPDATE命令时遇到了一些紧急问题。

问题是,每当我在PHP中更新我的数据时,它都不会流向mySQL数据库,因此即使它仍然返回到'ed​​it_event.php'也没有进行任何更改(这是我的列表中的页面)增加的事件将是)

另外,另一个问题是,如何传输我的数据,以便每当我点击'edit_event.php'中的'edit'时,我的信息可以在'update_form.php'的相应文本字段中看到?

提前非常感谢!! 真的很感激!

这是update_form.php:

//Update_form.php

    <title>Update Form</title>
</head>

<body>
<?
$host = 'localhost';
$dbusername='root';
$dbpassword='';
$database='mp19';


// Connect to server and select database.
mysql_connect('localhost', 'root', '')or die("cannot connect"); 
mysql_select_db("mp19")or die("cannot select DB");

// get value of id that sent from address bar
$ID=$_GET['ID'];


// Retrieve data from database 
$query="SELECT * FROM events WHERE ID='$ID'";
$result=mysql_query($query);

$rows=mysql_fetch_array($result);

?>

<script type="text/javascript">

function show_alert () 
{

if (document.getElementById('e.title').value.length=="0")
{
alert ("ERROR! You cannot leave the event title blank!")
return false;
}

else if (document.getElementById('content').value.length=="0") 
{
alert ("ERROR! You cannot leave the description blank!")
return false;
}

else if (document.getElementById('venue').value.length=="0")
{
alert ("ERROR! You cannot leave the venue blank!")
return false;
}

else if (document.getElementById('month').value=="0") 
{
alert ("ERROR! You cannot leave the month blank!")
return false;
}

else if (document.getElementById('date').value=="0") 
{
alert ("ERROR! You cannot leave the day blank!")
return false;
}

else if (document.getElementById('year').value=="0") 
{
alert ("ERROR! You cannot leave the year blank!")
return false;
}

else 
{

    return true;
}
}
</script>

<form id="update" onSubmit="return show_alert();" name="update" method="post" action="update_entry_now.php">
  <h2><strong>Update Form</strong></h2>


  <table width="390" border="1">
    <tr>
      <td  width="82"><strong>Event Title:</strong></td>
      <td  width="292"><label for="e.title"></label>
      <input name="e.title" type="text" id="e.title" value= <? echo $rows['e.title']; ?>></td>
    </tr>
    <tr>
      <td ><strong>Description:</strong></td>
      <td ><label for="description"></label>
      <textarea name="description" id="content" cols="45" rows="5" value= <? echo $rows['content']; ?>></textarea></td>
    </tr>
    <tr>
      <td ><strong>Venue:</strong></td>
      <td ><input type="text" name="venue" id="venue" value= <? echo $rows['venue']; ?>></td>
    </tr>
    <tr>
      <td ><strong>Date:</strong></td>
      <td ><select name="date" size="1" id="event_date" value= <? echo $rows['event_date']; ?>> 
        <option value="0">Day</option>
      <option>1</option>
      <option>2</option>
      <option>3</option>
      <option>4</option>
      <option>5</option>
      <option>6</option>
      <option>7</option>
      <option>8</option>
      <option>9</option>
      <option>10</option>
      <option>11</option>
      <option>12</option>
      <option>13</option>
      <option>14</option>
      <option>15</option>
      <option>16</option>
      <option>17</option>
      <option>18</option>
      <option>19</option>
      <option>20</option>
      <option>21</option>
      <option>22</option>
      <option>23</option>
      <option>24</option>
      <option>25</option>
      <option>26</option>
      <option>27</option>
      <option>28</option>
      <option>29</option>
      <option>30</option>
      <option>31</option>
    </select>
        <select name="month" size="1" id="month">
          <option value="0">Month</option>
          <option>1</option>
          <option>2</option>
          <option>3</option>
          <option>4</option>
          <option>5</option>
          <option>6</option>
          <option>7</option>
          <option>8</option>
          <option>9</option>
          <option>10</option>
          <option>11</option>
          <option>12</option>
        </select>
    <select name="year" size="1" id="year">
      <option value="0">Year</option>
      <option>2011</option>
      <option>2012</option>
    </select>
      </td>
    </tr>
    <tr>
      <td >&nbsp;</td>

      <td >
     <input type="hidden" name="ID" method="post" value="<? echo $row['ID']; ?>" />
      <input type="submit" name="submit" id="submit" value="Submit">
      <input type="reset" name="Reset" id="button" value="Reset" /></td>
    </tr>
  </table>
</form>

</body>
</html>

这是update_entry_now.php:

//update_entry_now.php

<?
 session_start();
$host = 'localhost';
$dbusername='root';
$dbpassword='';
$database='mp19';

$link = mysql_connect('localhost', 'root', '');
if (!$link)
  {
  die('Could not connect: ' . mysql_error());
  }

$_SESSION['username'] = $admin;
$_SESSION['password'] = $password; 

$ID = $_POST['ID'];
    $content = $_POST['content'];
    $event_date = $_POST['event_date'];
    $venue = $_POST['venue'];

$db_selected =mysql_select_db('mp19', $link);
$query = "UPDATE events SET content = '$content', event_date = '$event_date', venue = '$venue' WHERE ID = '$ID' LIMIT 1";

$result = mysql_query($query,$link);

if (!mysql_query($query,$link))
  {
  die('Error: ' . mysql_error());
  }
header ('Location:edit_events.php');

mysql_close();
?>

这是edit_events.php:

//edit_events.php

<?
 session_start();
$host = 'localhost';
$dbusername='root';
$dbpassword='';
$database='mp19';

$link = mysql_connect('localhost', 'root', '');
if (!$link)
  {
  die('Could not connect: ' . mysql_error());
  }

$_SESSION['username'] = $admin;
$_SESSION['password'] = $password; 

    $day = $_POST['day'];
    $month=$_POST['month'];
    $year = $_POST['year'];

$event_date = $day.'-'.$month.'-'.$year;

$db_selected =mysql_select_db('mp19', $link);
$query = "SELECT * FROM events ORDER BY '$event_date' DESC";    
$result = mysql_query($query,$link);

?>

 <table width="1500" border="1">
      <tr>
        <td><div align="center">Event ID</td>
        <td><div align="center">Admin No.</td>
        <td><div align="center">Name</td>
        <td><div align="center">Event Title</td>
        <td><div align="center">Content</td>
        <td><div align="center">Venue</td>
        <td><div align="center">Event Date</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
      </tr>
      <tr>
      <?


$i = 1;
while($row = mysql_fetch_assoc($result))
{

?>


        <td width="59"><div align="center"> <?= $i; ?></td>
        <td width="153"><div align="center"><?= $row['ID']; ?></td>
        <td width="200"><div align="center"><?= $row['name']; ?></td>
        <td width="191"><div align="left"><?= $row['e.title']; ?></td>
        <td width="220"><div align="left"><?= $row['content']; ?></td>
        <td width="143"><div align="left"><?= $row['venue']; ?></td>
        <td width="132"><div align="left"><?= $row['event_date'];?></td>
<td width="70"><div align="center"><a href="update_form.php?e.id=<?php echo $i; ?>">Edit</a></td>
<td width="70"><div align="center"><a href="delete_entry_now.php?ID=<?php echo $row['ID']; ?>">Delete</a></td>
      </tr>
<? 
$i++;
}

mysql_close(); ?>
  </table>

2 个答案:

答案 0 :(得分:0)

您的表单字段的名称与您从$_POST读取的密钥的名称不同。这可能就是为什么这些值没有进入你的数据库。

您还应该检查并清理代码。您有许多未使用的变量,格式不一致,每次提交表单时都会运行两次更新查询等。

您的代码容易受到SQL注入攻击,因为在将任何输入放入查询之前,您不会在任何输入上调用mysql_real_escape_string。除了危险之外,只要有人将一个引号标记放入其中一个表单输入中,它就会立即破坏您的网站。

您的查询还包含许多逻辑错误,这些错误不会导致它们失败,但会导致它们执行意外操作。您已将单引号放在不应引用的数值周围,并且在最后一个代码段中,您按字面值而不是列名对结果进行排序。我不确定您是打算按日期对结果进行排序,还是按日期过滤结果,但无论哪种方式,它都不会做任何事情,只会随机排序结果。

答案 1 :(得分:0)

第一个问题是为什么数据没有显示在update_form.php的相关字段中。 当你想在文本框中显示数据然后显示如下

&lt; input name =“e.title”type =“text”id =“e.title”value“=&lt;?php echo $ rows ['e.title'];?”&gt;&gt; < / p>

你遗漏了两件事,你没有在值之后放置双引号(“”),而且你没有正确地在值部分启动php标签。 如果你想在textarea中显示数据,那么你应该在关闭textarea标签之后和&lt; / textare&gt;之前显示数据。像这样

&lt; textarea name =“description”id =“content”cols =“45”rows =“5”&gt;&lt;?php echo $ rows ['content']; ?&GT;

对于选择,您应该通过循环生成选项,而不是编写每个选项。像这样

&lt; select name =“date”&gt; &LT; PHP 为($ I = 1; $ I&LT; 32; $ I ++) { 如果($行[ '日期'] == $ I) $选择= '选择'; 其他 $选择= ''; echo('&lt; option value =“'。$ i。'”'。$ selected。'&gt;'。$ i。'&lt; / option&gt;'); } ?&GT; &LT; /选择&GT;