Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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表单数据发送到sql数据库_Php_Mysql_Forms_Mysqli - Fatal编程技术网

通过php将html表单数据发送到sql数据库

通过php将html表单数据发送到sql数据库,php,mysql,forms,mysqli,Php,Mysql,Forms,Mysqli,我正在尝试将表单上收集的数据插入mysql数据库。我能够成功连接,但数据未插入。我读过很多类似的问题,但迄今为止都没有成功 sqldatabase.php <?php $servername = "localhost"; $username = "USER"; $password = "PASS"; $dbname = "DATABASE"; // Create connection $conn = mysqli_connect($servername, $username, $pass

我正在尝试将表单上收集的数据插入mysql数据库。我能够成功连接,但数据未插入。我读过很多类似的问题,但迄今为止都没有成功

sqldatabase.php

<?php
$servername = "localhost";
$username = "USER";
$password = "PASS";
$dbname = "DATABASE";

// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);

// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$first_spouse = $_POST['first_spouse'];
$last_spouse = $_POST['last_spouse'];
$address = $_POST['address'];
$city = $_POST['city'];
$state = $_POST['state'];
$zip = $_POST['zip'];
$phonehome = $_POST['phonehome'];
$phonecell = $_POST['phonecell'];
$email = $_POST['email'];
$dob = $_POST['dob'];
$occupation = $_POST['occupation'];
$shirt_size = $_POST['shirt_size'];
$cap_size = $_POST['cap_size'];
$shirtnum1 = $_POST['shirtnum1'];
$shirtnum2 = $_POST['shirtnum2'];
$desc = $_POST['desc'];
$bylaws_rules = $_POST['bylaws_rules'];
$umpires = $_POST['umpires'];
$alcohol = $_POST['alcohol'];
$waiver = $_POST['waiver'];


$sql="INSERT INTO 'softball_reg_2016' (first_name, last_name, first_spouse, last_spouse,
 address, city, state, zip, phonehome, phonecell, email, dob, occupation, shirt_size,
  cap_size, shirtnum1, shirtnum2, desc, bylaws_rules, umpires, alcohol, waiver)
  VALUES ('$_POST[first_name]', '$_POST[last_name]', '$_POST[first_spouse]', '$_POST[last_spouse]',
 '$_POST[address]', '$_POST[city]', '$_POST[city]', '$_POST[state]', '$_POST[zip]',
 '$_POST[phonehome]', '$_POST[phonecell]', '$_POST[email]', '$_POST[dob]', '$_POST[occupation]',
 '$_POST[shirt_size]', '$_POST[cap_size]', '$_POST[shirtnum1]', '$_POST[shirtnum2]',
 '$_POST[desc]', '$_POST[bylaws_rules]', '$_POST[umpires]', '$_POST[alcohol]', '$_POST[waiver]')";

echo "Connected successfully";

mysqli_close($conn);
?> 

作为社区wiki发布。

这里有一些问题

  • 首先,您从未执行过查询
  • 您从不检查字段,这可能会在表中插入空行
请参阅手册:

面向对象风格

混合mysqli::query(字符串$query[,int$resultmode=mysqli\u STORE\u RESULT])

程序风格

混合mysqli_查询(mysqli$link,string$query[,int$resultmode=mysqli_存储结果])

那么您的表使用了错误的标识符限定符:

INSERT INTO 'softball_reg_2016'
            ^                 ^
为常规单引号,其中应为勾号或完全不加引号:

INSERT INTO `softball_reg_2016`
仅此一点就可能导致语法错误

阅读标识符限定符:

然后使用
desc
作为列名称,它是MySQL保留字。这也会给你带来一个错误。因此,要么将其重命名为其他名称,要么将其用记号包起来

`desc`
参考:

还要检查错误:

另外,您当前的代码对用户开放。使用,或与

另外,既然已经向POST数组声明了变量,为什么要将POST数组放在查询中?只是使用了变量。你使用了更多的代码,真的没用

如评论中所述:


“您还有两个同名的输入字段:
phone
。这是故意的还是复制/粘贴的常见问题?–FirstOne”


以社区wiki的形式发布。

这里有一些问题

  • 首先,您从未执行过查询
  • 您从不检查字段,这可能会在表中插入空行
请参阅手册:

面向对象风格

混合mysqli::query(字符串$query[,int$resultmode=mysqli\u STORE\u RESULT])

程序风格

混合mysqli_查询(mysqli$link,string$query[,int$resultmode=mysqli_存储结果])

那么您的表使用了错误的标识符限定符:

INSERT INTO 'softball_reg_2016'
            ^                 ^
为常规单引号,其中应为勾号或完全不加引号:

INSERT INTO `softball_reg_2016`
仅此一点就可能导致语法错误

阅读标识符限定符:

然后使用
desc
作为列名称,它是MySQL保留字。这也会给你带来一个错误。因此,要么将其重命名为其他名称,要么将其用记号包起来

`desc`
参考:

还要检查错误:

另外,您当前的代码对用户开放。使用,或与

另外,既然已经向POST数组声明了变量,为什么要将POST数组放在查询中?只是使用了变量。你使用了更多的代码,真的没用

如评论中所述:


“您还有两个同名的输入字段:
phone
。这是故意的还是复制/粘贴的常见问题?–FirstOne”


您需要执行查询。你刚刚拿走了绳子。 这就是你所缺少的。放

  mysqli_query($conn,$sql);

在成功消息之前

您需要执行查询。你刚刚拿走了绳子。 这就是你所缺少的。放

  mysqli_query($conn,$sql);

在成功消息之前

您没有执行查询

你必须这样做

mysqli_query($conn,$query);

在关闭连接之前

您没有执行查询

你必须这样做

mysqli_query($conn,$query);

在关闭连接之前

只需在查询中声明变量。您在哪里运行的?查询从未运行过。您应该
echo$sql也一样,读一遍,没关系。也对SQL注入非常开放。您使用的是
mysqli\uuu
,利用准备好的语句。您还有两个同名的输入字段:
phone
。这是故意的还是复制/粘贴的常见问题?@FirstOne它似乎变得更好了,不是吗?里面有很多错误。@Fred ii-,别提了。特别是,由于op正在尝试从post读取
phonehome
phonecell
,所以您只是在用查询声明变量。您在哪里运行的?查询从未运行过。您应该
echo$sql也一样,读一遍,没关系。也对SQL注入非常开放。您使用的是
mysqli\uuu
,利用准备好的语句。您还有两个同名的输入字段:
phone
。这是故意的还是复制/粘贴的常见问题?@FirstOne它似乎变得更好了,不是吗?里面有很多错误。@Fred ii-,别提了。特别是因为op试图从post中读取
phonehome
phonecell
。你说得对,应该是mysqli_查询($conn,$sql);就他的情况而言。刚刚编辑,谢谢你指出@QirelYou你是对的,应该是mysqli_查询($conn,$sql);就他的情况而言。刚刚编辑,感谢您指出@qirel参数顺序错误;)参数顺序错误;)好的编辑,谢谢@FirstOne总是最好检查
empty()
”的属性。好的编辑,谢谢@FirstOne总是最好检查
empty()
”的属性。