#php #mysql
#php #mysql
Вопрос:
кто-нибудь может просмотреть этот код и сказать мне, почему он не обновляет базу данных? Я знаю, что ее взломали вместе, я новичок в PHP
заранее спасибо
<?php
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$sql="SELECT * FROM $tbl_name WHERE depot = 'plainview'";
$result=mysql_query($sql);
// Count table rows
$count=mysql_num_rows($result);
//update
if(isset($_POST['Submit'])){
for($i=0;$i<$count;$i ){
$sql1 = "UPDATE $tbl_name SET
available='{$_POST['available'][$i]}',
rent='{$_POST['rent'][$i]}',
corp_ready='{$_POST['corp_ready'][$i]}',
down='{$_POST['down'][$i]}',
gfs='{$_POST['gfs'][$i]}',
dateTime = NOW()
WHERE id='$id[$i]'";
$result1 = mysql_query($sql1) or die(mysql_error());
}
}
//redirect
if($result1){
header("location: plainview.php");
}
mysql_close();
?>
======================
весь код
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$sql="SELECT * FROM $tbl_name WHERE depot = 'plainview'";
$result=mysql_query($sql);
// Count table rows
$count=mysql_num_rows($result);
//update
if(isset($_POST['Submit'])){
for($i=0;$i<$count;$i ){
$sql1 = "UPDATE $tbl_name SET
available='".mysql_real_escape_string($_POST['available'][$i])."',
rent='".mysql_real_escape_string($_POST['rent'][$i])."',
corp_ready='".mysql_real_escape_string($_POST['corp_ready'][$i])."',
down='".mysql_real_escape_string($_POST['down'][$i])."',
gfs='".mysql_real_escape_string($_POST['gfs'][$i])."',
dateTime = NOW()
WHERE id='".$id[$i]."'";
$result1 = mysql_query($sql1) or die(mysql_error());
}
}
//redirect
if($result1){
header("location: plainview.php");
}
mysql_close();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script language="JavaScript1.1" type="text/javascript">
<!--
function mm_jumpmenu(targ,selObj,restore){ //v3.0
eval(targ ".location='" selObj.options[selObj.selectedIndex].value "'");
if (restore) selObj.selectedIndex=0;
}
//-->
</script>
<title>Untitled Document</title>
</head>
<body>
<div>
<p>Plainview, North East Region</p>
<p>Select a different region: <select onchange="mm_jumpmenu('parent',this,0)" name="lostlist">
<option value="" selected="selected">Choose Your Depot</option>
<option value="plainview.php">Plainview</option>
<option value="worcrester.php">Worcrester</option>
</select></p>
</div><Br />
<table width="500" border="0" cellspacing="1" cellpadding="0">
<form name="form1" method="post" action="">
<tr>
<td>
<table width="700" border="0" cellspacing="1" cellpadding="0">
<tr>
<td>ID</td>
<td align="center"><strong>Product Name</strong></td>
<td align="center"><strong>Available</strong></td>
<td align="center"><strong>Rent</strong></td>
<td align="center"><strong>Corp Ready</strong></td>
<td align="center"><strong>Down</strong></td>
<td align="center"><strong>GFS</strong></td>
</tr>
<?php
while($rows=mysql_fetch_array($result)){
?>
<tr>
<td align="left"><?php $id[]=$rows['id']; ?><?php echo $rows['id']; ?></td>
<td align="left"><?php echo $rows['product']; ?></td>
<td align="center"><input name="available[]" type="text" id="available" value="<?php echo $rows['available']; ?>" size="5"></td>
<td align="center"><input name="rent[]" type="text" id="rent" value="<?php echo $rows['rent']; ?>" size="5"></td>
<td align="center"><input name="corp_ready[]" type="text" id="corp_ready" value="<?php echo $rows['corp_ready']; ?>" size="5"></td>
<td align="center"><input name="down[]" type="text" id="down" value="<?php echo $rows['down']; ?>" size="5" /></td>
<td align="center"><input name="gfs[]" type="text" id="gfs" value="<?php echo $rows['gfs']; ?>" size="5"></td>
</tr>
<?php
}
?>
<tr>
<td colspan="4" align="center"><input type="submit" name="Submit" value="Submit"></td>
</tr>
</table>
</td>
</tr>
</form>
</table>
<?php
echo "$sql1";
?>
</body>
</html>
Комментарии:
1. Что возвращает echo $ sql1 и какое сообщение об ошибке вы получаете? Где вы назначаете $tbl_name?
2. Привет, таблицы Bobby и недостаточная обработка ошибок..
3. что
echo mysql_error();
говорит.4. $tbl_name установлено ранее, проблем нет
5. echo mysqL_error(); не выдает ошибки
Ответ №1:
Попробуйте echo "id='$id[$i]'<br />";
и посмотрите, получаете ли вы идентификаторы, которые должны быть отправлены.
Комментарии:
1. ну, это ваша проблема, вы не можете изменить идентификатор, который вы не даете
2. попробуйте изменить
WHERE id='$id[$i]'
наWHERE id='$i'
3. Я не вижу, где вы настраиваете
$id
4. теперь данные вставляются, но перемещаются на 1 строку выше в базе данных, поэтому все перемещается вверх
5.
$id
есть ли поле в форме, если это так, оно должно быть$_POST['id']
Ответ №2:
Всегда экранируйте весь пользовательский ввод. Ваш запрос на обновление должен выглядеть следующим образом
$sql1 = "UPDATE $tbl_name SET
available='".mysql_real_escape_string($_POST['available'][$i])."',
rent='".mysql_real_escape_string($_POST['rent'][$i])."',
corp_ready='".mysql_real_escape_string($_POST['corp_ready'][$i])."',
down='".mysql_real_escape_string($_POST['down'][$i])."',
gfs='".mysql_real_escape_string($_POST['gfs'][$i])."',
dateTime = NOW()
WHERE id='".$id[$i]."'";
Комментарии:
1. @Peter: Кроме того, проверьте, действительно ли в вашей таблице существует запись с идентификатором equals
$id[$i]
. Если этого не происходит, ничего не меняется, и ошибки не выдаются.
Ответ №3:
$tbl_name
Было установлено за пределами предоставленного вами кода? Если нет, настройте это так, чтобы ваш sql знал, с какой таблицей работать.