如何使用PHP将表单数据插入MySQL数据库?

5

我已经花费了数小时来排除故障,但不确定为什么这不起作用。我正在尝试使用Qt应用程序发送HTTP POST请求,并将此作为我的PHP脚本:

<?php
$con=mysqli_connect("*.mysql.eu2.*.com:3306","*****","****","****");

if (mysqli_connect_errno($con))
{
   echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$id = filter_input(INPUT_POST, 'id', FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW);
$price = filter_input(INPUT_POST, 'price', FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW);
$type = filter_input(INPUT_POST, 'type', FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW);
$stock= filter_input(INPUT_POST, 'stock', FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW);

  $currentid = mysqli_insert_id();

  if (trim($id) == '') {
    exit('id cannot be empty!');
  }
  if (trim($price) == '') {
    exit('price cannot be empty!');
  }
  if (trim($type) == '') {
    exit('type cannot be empty!');
  }
  if (trim($stock ) == '') {
    exit('stock cannot be empty!');
  }

  $result = "insert into ammo (ammoType,storeId,ammoStock,ammoPrice) VALUES ('".$type."','".$id."','".$stock."','".$price."');";

   mysqli_query($result) or die("Could not insert data");



mysqli_close($con);
?>

我曾经遇到过这样一种情况,即虽然取得了成功,但实际上数值并没有出现在我的数据库中。

谢谢, -David

1
它显示任何错误吗? - Alive to die - Anant
2
没有看到HTML表单和数据库架构,无法确定。检查错误。你并没有真正这样做。or die("Could not insert data"); 对你来说并没有什么用处。 - Funk Forty Niner
2
你也没有连接到你的查询。 - Funk Forty Niner
1
mysqli_query($result) or die("Could not insert data"); 更改为 mysqli_query($con,$result) or die(mysqli_error($con)); - Alive to die - Anant
1
@SketchyTurtle使用我给的代码,然后看看会发生什么? - Alive to die - Anant
显示剩余2条评论
1个回答

5

首先,您没有连接到您的查询。

mysqli_query($result)

该函数需要两个参数,首先是数据库连接。

mysqli_query($con,$result)

阅读手册:http://php.net/manual/en/mysqli.query.php

并且你需要检查错误。我们不知道你的HTML表单中有什么内容,是否使用了POST方法以及你的元素是否具有正确的名称属性。

如果你收到未定义索引通知,你就会知道该去找什么。

在文件顶部添加错误报告,这将有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code

注:仅在测试环境中显示错误,永远不要在生产环境中这样做。

这对你没有帮助

or die("Could not insert data");

这个功能

or die(mysqli_error($con));

您还应该使用预处理语句。

注意:

如果MySQL抱怨数据输入为Jack's Bar & Grill,那么您需要转义您的数据。

  • 无论如何,都应该这样做。

1
@SketchyTurtle 非常感谢,很高兴能够帮到你。干杯 - Funk Forty Niner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接