如何在使用explode时更新mysql数据

时间:2010-05-05 13:25:45

标签: php mysql

我有这段代码加载与id号对应的生日月份:

<?php 
    $query = "SELECT DISTINCT BIRTHDAY FROM student WHERE IDNO='".$_GET['id']."'";
    if($result = mysql_query($query))  
    {
        if($success = mysql_num_rows($result) > 0) 
        {
?>
<select title="- Select Month -" name="mm" id="mm" class="" > 
<?php

    while ($row = mysql_fetch_array($result))
           list($year,$month,$day)=explode("-", $row['BIRTHDAY']);
?> 
             <option value="<?php echo $month;?>"><?php echo $month; ?></option>\n";

这是表单操作:

$birthday = mysql_real_escape_string($_POST['mm']); 

mysql_query("UPDATE student SET YEAR = FIRSTNAME='$fname',  BIRTHDAY='$birthday'
WHERE IDNO ='$idnum'");

我应该怎么做,当我点击更新按钮时,它会执行,但我看到未定义的偏移量错误存储在mysql数据库而不是月份。 我只是一个初学者,你能给我一些关于如何更新数据的提示

2 个答案:

答案 0 :(得分:1)

在这种情况下......你将不得不使用3个选择然后加入它们来更新数据库...所以,在表格中你有这样的东西:

<select name='month'>
    <option value='1'>January</option>
    <option value='xx'>etc</option>
</select>
<select name='day'>
    <option value='1'>1</option>
    <option value='xx'>etc</option>
</select>
<select name='year'>
    <option value='1980'>1980</option>
    <option value='xx'>etc</option>
</select>

然后......接收该数据的PHP应该执行以下操作:

$year = mysql_real_escape_string($_REQUEST['year']);
$month = mysql_real_escape_string($_REQUEST['month']);
$day = mysql_real_escape_string($_REQUEST['day']);

$birthday = $year.'-'.$month.'-'.$day;
mysql_query("UPDATE student SET YEAR = FIRSTNAME='$fname',  BIRTHDAY='$birthday'
WHERE IDNO ='$idnum'");

当然......你必须首先验证是否设置了所有变量。您可以使用isset方法完成此操作。

答案 1 :(得分:-1)

检查您的更新查询,可能是错误的。

mysql_query("UPDATE student SET YEAR = FIRSTNAME='$fname',  BIRTHDAY='$birthday'
WHERE IDNO ='$idnum'");

查看今年和名字,今年将为您分配空字符。

只需这样分配,

$birthday = mysql_real_escape_string($_POST['mm']);