Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从HTML表单向MySQL数据库添加数据_Php_Html_Mysql_Forms - Fatal编程技术网

Php 从HTML表单向MySQL数据库添加数据

Php 从HTML表单向MySQL数据库添加数据,php,html,mysql,forms,Php,Html,Mysql,Forms,大家好,我有一个基本的Web表单,用于将数据放入mysql数据库,我创建了代码来报告我是否正确连接到数据库,所以在完成表单后,我对它进行了测试,它似乎达到了我的预期效果,但当我转到数据库时,没有实际输入数据?我在本地和服务器上都做过同样的尝试。下面是我的两个.php表单供您查看,我在本地机器上使用它们在MAMP中进行测试,以防我做错了什么: virtualWalkLog.php <form action="hazardsform.php" method="POST" /> &l

大家好,我有一个基本的Web表单,用于将数据放入mysql数据库,我创建了代码来报告我是否正确连接到数据库,所以在完成表单后,我对它进行了测试,它似乎达到了我的预期效果,但当我转到数据库时,没有实际输入数据?我在本地和服务器上都做过同样的尝试。下面是我的两个.php表单供您查看,我在本地机器上使用它们在MAMP中进行测试,以防我做错了什么:

virtualWalkLog.php

<form action="hazardsform.php" method="POST"  />
  <p>ROUTE: <input type="text" name="ROUTE" /></p>
  <p>ADDRESS: <input type="text" name="ADDRESS" /></p>
  <p>LATITUDE: <input type="text" name="LATITUDE" /></p>
  <p>LONGITUDE: <input type="text" name="LONGITUDE" /></p>
  <p>HAZARD: <input type="text" name="HAZARD" /></p>
  <p>RISK: <input type="text" name="RISK" /></p>
  <input type="submit" value="Submit" />
</form>

路线:

地址:

纬度:

经度:

危害:

风险:

hazardsform.php

<?php

define('DB_NAME', 'virtualWalkLog');
define('DB_USER', 'root');
define('DB_PASSWORD', 'root');
define('DB_HOST', 'localhost');

$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);

if (!$link) {
     die('Could not connect: ' . mysql_error());
     }

     $db_selected = mysql_select_db(DB_NAME, $link);

     if (!$db_selected) {
     die('Can\'t use ' . DB_NAME . ': ' . mysql_error());
     }

     $value = $_POST['ROUTE'];
     $value = $_POST['ADDRESS'];
     $value = $_POST['LATITUDE'];
     $value = $_POST['LONGITUTE'];
     $value = $_POST['HAZARD'];
     $value = $_POST['RISK'];

     $sql = "INSERT INTO rmbhazards (ROUTE, ADDRESS, LATITUDE, LONGITUDE, HAZARD, RISK) VALUES ('$value', '$value2', 
     '$value3', '$value4', '$value5', '$value6')";

     mysql_close();

您没有执行
查询
,这就是没有插入数据的原因。设法放在后面

$sql = "INSERT INTO rmbhazards (ROUTE, ADDRESS, LATITUDE, LONGITUDE, HAZARD, RISK) VALUES ('$value', '$value2', '$value3', '$value4', '$value5', '$value6')";
这个

此外,所有值都在一个变量
$value
中,因此您将在表中得到所有相同的结果,因此更改为适合您的查询

 $value = $_POST['ROUTE'];
 $value2 = $_POST['ADDRESS'];
 $value3 = $_POST['LATITUDE'];
 $value4 = $_POST['LONGITUTE'];
 $value5 = $_POST['HAZARD'];
 $value6 = $_POST['RISK'];
我还建议您停止使用
mysql\uu
api,因为它们是非包装的,请切换到或


此外,您已经准备好
mysql注入
。这里有一个很好的教程,它向您解释了一切->

您正在将所有输入字段值捕获到一个变量中。您需要执行mysql\u查询,它才能工作。更改此项:-

     $value = $_POST['ROUTE'];
     $value = $_POST['ADDRESS'];
     $value = $_POST['LATITUDE'];
     $value = $_POST['LONGITUTE'];
     $value = $_POST['HAZARD'];
     $value = $_POST['RISK'];
致:-


完成后,您需要调用mysql\u query($sql)来执行查询。

将所有变量设置为相同的名称

 $value = $_POST['ROUTE'];
 $value = $_POST['ADDRESS'];
 $value = $_POST['LATITUDE'];
 $value = $_POST['LONGITUTE'];
 $value = $_POST['HAZARD'];
 $value = $_POST['RISK'];
将它们更改为唯一id(正如您在sql语句中引用的)

并将查询语句更改为实际执行

 $result = mysql_query("INSERT INTO rmbhazards (ROUTE, ADDRESS, LATITUDE, LONGITUDE, HAZARD, RISK) VALUES ('$value', '$value2', 
 '$value3', '$value4', '$value5', '$value6')");
只需重命名:

$value = $_POST['ROUTE'];
$value2 = $_POST['ADDRESS'];
$value3 = $_POST['LATITUDE'];
$value4 = $_POST['LONGITUTE'];
$value5 = $_POST['HAZARD'];
$value6 = $_POST['RISK'];

此处仅为一个变量赋值
$value

 $value = $_POST['ROUTE'];
 $value = $_POST['ADDRESS'];
 $value = $_POST['LATITUDE'];
 $value = $_POST['LONGITUTE'];
 $value = $_POST['HAZARD'];
 $value = $_POST['RISK'];
应该是

 $value = $_POST['ROUTE'];
 $value2 = $_POST['ADDRESS'];
 $value3 = $_POST['LATITUDE'];
 $value4 = $_POST['LONGITUTE'];
 $value5 = $_POST['HAZARD'];
 $value6 = $_POST['RISK'];

还可以调用
mysql\u查询($sql)
用于运行查询。

快速浏览脚本后,需要调用
mysql\u query($sql)

$sql=“插入危险(路线、地址、纬度、经度、危险、风险)值('$value','$value2',”,
“$value3'、$value4'、$value5'、$value6'”

mysql\u sql
query将实际执行查询

另外,
$value
应该是唯一的

 $value = $_POST['ROUTE'];
 $value2 = $_POST['ADDRESS'];
 $value3 = $_POST['LATITUDE'];

 -----
建议因为您刚刚开始..我建议您尝试mysql_* 但是使用
mysqli.*
PDO
。。您还应该了解sql注入

这里有一些教程可以帮助你


您正在使用并且应该使用。你也很容易受到现代API的影响。非常感谢你指出了我的错误,在阅读了你的评论后,我成功地让它工作了。谢谢你。在我读过mysql之前,我将使用一个表单,这个表单不会成为公众的知识,只有一个人,但是sql注入仍然可以找到我的表单吗?另外,我的表单正在向数据库发送纬度和经度坐标,纬度发送得很完美,但纬度是负数,即-6.12345,在我的数据库中显示为0。知道为什么会发生这种情况吗?@futhark这是一个get表单还是post表单?
 $value = $_POST['ROUTE'];
 $value = $_POST['ADDRESS'];
 $value = $_POST['LATITUDE'];
 $value = $_POST['LONGITUTE'];
 $value = $_POST['HAZARD'];
 $value = $_POST['RISK'];
 $value = $_POST['ROUTE'];
 $value2 = $_POST['ADDRESS'];
 $value3 = $_POST['LATITUDE'];
 $value4 = $_POST['LONGITUTE'];
 $value5 = $_POST['HAZARD'];
 $value6 = $_POST['RISK'];
 $value = $_POST['ROUTE'];
 $value2 = $_POST['ADDRESS'];
 $value3 = $_POST['LATITUDE'];

 -----