Я пытаюсь получить html-форму, которая обновляет данные mysql. Теперь у меня есть этот код (который также является действием формы), и я также пытаюсь использовать его как форму для моего обновления. Потому что мне понадобятся данные, которые эта форма будет показывать, так что пользователям будет проще обновлять только то, что они хотят обновить.
это форма, которая будет пытаться выполнить поиск данных:
<form name="form1" method="post" action="new.php"> <td> <table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF"> <tr> <td colspan="16" style="background:#9ACD32; color:white; border:white 1px solid; text-align: center"><strong><font size="3">ADMISSION INFORMATION SHEET</strong></td> </tr> <tr>
Это new.php (отображает соответствующие данные на основе введенного имени, а также будет пытаться служить формой для процесса обновления.
$con = mysql_connect("localhost","root",""); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("Hospital", $con); $result = mysql_query("SELECT * FROM t2 WHERE FIRSTNAME='{$_POST["fname"]}'"); ?> <table width="900" border="0" align="left" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC"> <td> <table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF"> <tr> <td colspan="16" style="background:#9ACD32; color:white; border:white 1px solid; text-align: center"><strong><font size="3">ADMISSION INFORMATION SHEET</strong></td> </tr> <tr> <?php while ( $row = mysql_fetch_array($result) ) { ?> <form name="form1" method="post" action="update.php"> <td width="54"><font size="3">Hospital #</td> <td width="3">:</td> <td width="168"><input name="hnum" type="text" value="<?php echo $row["HOSPNUM"]; ?>"> </td>
Это мой update.php,
mysql_select_db("Hospital", $con); mysql_query("UPDATE t2 SET HOSPNUM='$_POST[hnum]' ROOMNUM='$_POST[rnum]', LASTNAME='$_POST[lname]', FIRSTNAME='$_POST[fname]', MIDNAME='$_POST[mname]', CSTAT='$_POST[cs]' AGE='$_POST[age]', BDAY='$_POST[bday]', ADDRESS='$_POST[ad]', STAT='$_POST[stats1]', STAT2'$_POST[stats2]', STAT3'$_POST[stats3]', STAT4'$_POST[stats4]', STAT5'$_POST[stats5]', STAT6'$_POST[stats6]', STAT7'$_POST[stats7]', STAT8'$_POST[stats8]', NURSE='$_POST[nurse]', TELNUM ='$_POST[telnum]' WHERE FNAME ='$_POST[fname]'"); mysql_close($con); ?>
-Пожалуйста, помогите, я не знаю, почему он не обновляет данные.
Typo, отсутствует HOSPNUM и ROOMNUM: SET HOSPNUM='$_POST[hnum]' , ROOMNUM=
Предыдущие комментарии абсолютно верны. Я бы рекомендовал использовать адаптеры PDO или MySQLi и использовать подготовленный оператор для вашей записи в качестве минимального уровня безопасности. Использование первого имени как уникального идентификатора – плохая идея. У вас нет столбца первичного ключа в таблице?
Чтобы ответить на ваш реальный вопрос, проблема связана с обозначением массива в строке с двойными кавычками. В вашем заявлении также есть несколько знаков равенства. Попробуй это:
mysql_query(" UPDATE t2 SET HOSPNUM='" . mysql_real_escape_string($_POST['hnum']) . "', ROOMNUM='" . mysql_real_escape_string($_POST['rnum']) . "', LASTNAME='" . mysql_real_escape_string($_POST['lname']) . "', FIRSTNAME='" . mysql_real_escape_string($_POST['fname']) . "', MIDNAME='" . mysql_real_escape_string($_POST['mname']) . "', CSTAT='" . mysql_real_escape_string($_POST['cs']) . "', AGE='" . mysql_real_escape_string($_POST['age']) . "', BDAY='" . mysql_real_escape_string($_POST['bday']) . "', ADDRESS='" . mysql_real_escape_string($_POST['ad']) . "', STAT='" . mysql_real_escape_string($_POST['stats1']) . "', STAT2='" . mysql_real_escape_string($_POST['stats2']) . "', STAT3='" . mysql_real_escape_string($_POST['stats3']) . "', STAT4='" . mysql_real_escape_string($_POST['stats4']) . "', STAT5='" . mysql_real_escape_string($_POST['stats5']) . "', STAT6='" . mysql_real_escape_string($_POST['stats6']) . "', STAT7='" . mysql_real_escape_string($_POST['stats7']) . "', STAT8='" . mysql_real_escape_string($_POST['stats8']) . "', NURSE='" . mysql_real_escape_string($_POST['nurse']) . "', TELNUM='" . mysql_real_escape_string($_POST['telnum']) . "' WHERE FNAME='" . mysql_real_escape_string($_POST['fname']) . "' ");