首页 > 解决方案 > 将单个值插入表单中的整个列

问题描述

我有一个关于从 html 到 php 处理表单的问题。我只想将输入的十进制数(经度/纬度)放入我的 Sql 表中的每个经度和纬度列中。我来啦 :

我的Mysql表

我有这样的表格:

<form action="hitung.php" method="POST"  enctype="multipart/form-data"><fieldset><legend>Input Parameter Petir Klien Di bawah:</legend>
<table bordercolor="#FF0000" border="1"><caption>Tabel Input Lokasi Koordinat Klien</caption>
<tr><td>Isikan Longitude Lokasi Klien</td><td>:</td><td><input type="number" **name="long"**  placeholder="Isikan nilai Longitude berupa Desimal" /></td></tr>
<tr><td>Isikan Latitude Lokasi Klien</td><td>:</td><td><input type="number" **name="lat"**  placeholder="Isikan nilai Latitude berupa Desimal" /></td></tr>
<tr><td><input type="submit" name="klien" value="HITUNG DATA"/></td></tr>
<tr><td>
</td></tr></table></fieldset></form>

这是我制作的“hitung.php”:

<?php
set_time_limit(0);
include 'koneksi.php';

$longitude=$_POST['long'];
$latitude=$_POST['lat'];
$datalat = mysqli_query($con, "SELECT latitude FROM ngx");
$datalong = mysqli_query($con, "SELECT longitude FROM ngx");
$arraylat= mysqli_fetch_array($datalat);
$arraylong= mysqli_fetch_array($datalong);

while($longitude=$_POST['long']  && $latitude=$_POST['lat']) {

$lats= $arraylat['latitude'];
$longs= $arraylong['longitude'];

$update= mysqli_query($con, "INSERT INTO ngx (long, lat) VALUES ($lats, $longs)");}
?>

而且我想在我的查询表中添加一整列“lat”和“long”,并使用从上面的表单重新创建的相同的单个值(完全来自 lat/long 的输入文本),以便整个行lat 列将由 lat 的输入文本输入,long 列中的整行将由该表单的 long 输入文本输入

拜托,我还是编程新手……你会真诚地帮助我吗?非常感谢你。

标签: phpmysqlmysqli

解决方案


INSERT用于向表中添加新行。要更改现有行中的列,请使用UPDATE.

此外,您不应该使用while. 您的循环条件不会改变,因此循环将永远运行。

如果您只想从表单中设置longandlat列,则无需先获取longitudeandlatitude列。

<?php
set_time_limit(0);
include 'koneksi.php';

$longitude=$_POST['long'];
$latitude=$_POST['lat'];

$update= mysqli_prepare($con, "UPDATE ngx SET `long` = ?, `lat` = ?");
mysqli_stmt_bind_param($update, "dd", $longitude, $latitude);
mysqli_stmt_execute($update);
?>

我还展示了如何将您的代码转换为准备好的语句,以防止 SQL 注入。

请注意,您需要在列名周围加上反引号,long因为它是保留关键字。因此,使用保留字作为列名通常是个坏主意。


推荐阅读