用php编辑mysql表

时间:2014-04-22 02:50:18

标签: php mysql

我遗失了一些东西,我需要一些帮助!

以下代码生成一个包含可编辑字段的表格。当我编辑字段时,它会将该数据传递到我的编辑页面,该页面将运行UPDATE脚本。但是当我点击任何行上的Update按钮时,它会发送while循环中的每条记录。如何将其限制为我选择更新的记录?

感谢您的帮助!

$sitequery = "SELECT * FROM meterdata WHERE address LIKE '%$site%' ORDER BY apart_num + 0";

$siteresult = mysqli_query($connection,$sitequery);
    echo "<form action='editmeter.php' method='get'>";
$resultstring = '<table class="table table-hover">';
$resultstring .= '<tr>';
$resultstring .= '<th>Apartment</th>';
$resultstring .= '<th>Address</th>';
$resultstring .= '<th>Suburb</th>';
$resultstring .= '<th>Meter</th>';
$resultstring .= '<th>Meter Loction</th>';
$resultstring .= '<th>Type</th>';
$resultstring .= '<th>Units</th>';
$resultstring .= '<th>Start Read</th>';
$resultstring .= '<th>Read Date</th>';
$resultstring .= '<th>Waveflow</th>';
$resultstring .= '<th>Status</th>';
$resultstring .= '<th>Notes</th>';
$resultstring .= '</tr>';

while($data = mysqli_fetch_assoc($siteresult)){

    $resultstring .= "<tr>";
    $resultstring .= "<td><input type='text' value='$data[apart_num]' name='apart' name='apart' </td>";
    $resultstring .= "<td>$data[address]</td>";
    $resultstring .= "<td>$data[suburb]</td>";
    $resultstring .= "<td><input type='text' value='$data[meter_serial]' name='serial' ></td>";
    $resultstring .= "<td>$data[meter_location]</td>";
    $resultstring .= "<td><input type='text' value='$data[meter_type]' name='type'></td>";
    $resultstring .= "<td><input type='text' value='$data[meter_units]' name='unit'></td>";
    $resultstring .= "<td><input type='text' value='$data[start_read]' name='read'></td>";
    $resultstring .= "<td>$data[start_read_date]</td>";
    $resultstring .= "<td>$data[node_address]</td>";
    $resultstring .= "<td>$data[status]</td>";
    $resultstring .= "<td>$data[notes]</td>";
    $resultstring .= "<td><input type='submit' value='Update'></td>";
    echo"</from>";
    $resultstring .= "</tr>";

    }



$resultstring .= '</table>';


echo $resultstring;

2 个答案:

答案 0 :(得分:0)

我建议您添加一个带有id值的隐藏字段,该id值可以标识要更新的唯一项目,然后在更新查询中,您可以设置WHERE item_id = $ item_id。

答案 1 :(得分:0)

您正面临此问题,因为您正在更新表中的每条记录。要更新选定的行,您需要传递一个唯一的ID,您可以通过在表单中​​提供隐藏字段来执行该操作。您必须从表中提取该唯一列“id”。必须是这样的:

while($data = mysqli_fetch_assoc($siteresult)){

$resultstring .= "<tr>";
$resultstring .= "<td><input type="hidden" name="id" value="'.$data['id'].'" />
<input type='text' value='$data[apart_num]' name='apart' name='apart' </td>";
$resultstring .= "<td>$data[address]</td>";
........
}

现在相应的更新脚本必须是这样的:

$query = "UPDATE your_table SET apart='$apart', address='$address' WHERE id = '$id'";

您可以在此处添加尽可能多的列,但请确保使用WHERE子句。