PHP Mysql提交表单

PHP Mysql提交表单,php,mysql,sql,Php,Mysql,Sql,我正在尝试使用php将html表单中的数据提交到sql数据库。 它完成了第5部分,但除了自动递增的userID之外,在任何表行中似乎都没有任何实际数据。这段代码是否也受到SQL注入的保护? 另外,将日期戳输入SQL数据库的最佳方式是什么?例如,ClientSince字段 这是我的clientsubmit.php <?php // Create connection echo "Made it! Part 1"; $con=mysqli_connect("xxx","xxx","xxx","

我正在尝试使用php将html表单中的数据提交到sql数据库。 它完成了第5部分,但除了自动递增的userID之外,在任何表行中似乎都没有任何实际数据。这段代码是否也受到SQL注入的保护? 另外,将日期戳输入SQL数据库的最佳方式是什么?例如,ClientSince字段

这是我的clientsubmit.php

<?php
// Create connection
echo "Made it! Part 1";
$con=mysqli_connect("xxx","xxx","xxx","xxx");
echo "Made it! Part 2";
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }
$txtNam = mysql_real_escape_string($_POST["name"]);
$txtEmail = mysql_real_escape_string($_POST["email"]);
$txtSlots = mysql_real_escape_string($_POST["slotcount"]);
$txtSecurity = mysql_real_escape_string($_POST["passcode"]);
echo "Made it! Part 3";
$sql = "INSERT INTO accounts (name, email, slotCount, securityCode)     Values('$txtNam','$txtEmail','$txtSlots','$txtSecurity')";
echo "Made it! Part 4";
if (!mysqli_query($con,$sql))
  {
  die('Error: ' . mysqli_error($con));
  }


echo "Made it! Part 5";

mysqli_close($con);
?>
在提交到数据库之前,变量似乎没有保存任何数据

在你们的帮助下,它开始工作了,下面是完成的代码:

<?php
// Create connection
$con=mysqli_connect("xxxx","xxxx","xxxx","xxxx");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  die();
  }
$txtNam = mysqli_real_escape_string($con, $_POST["name"]);
$txtEmail = mysqli_real_escape_string($con, $_POST["email"]);
$txtSlots = mysqli_real_escape_string($con, $_POST["slotcount"]);
$txtSecurity = mysqli_real_escape_string($con, $_POST["passcode"]);
$sql = "INSERT INTO accounts (name, email, slotCount, securityCode)     Values('$txtNam','$txtEmail','$txtSlots','$txtSecurity')";
if (!mysqli_query($con,$sql))
  {
  die('Error: ' . mysqli_error($con));
  }

mysqli_close($con);
?>

您在上面提到了
submit.php
并在
clientsubmit.php
上发布了表单,问题是您使用的是
mysql\u real\u escape\u string()
mysqli*()

将mysql\u real\u escape\u string()更改为mysqli\u real\u escape\u string()


他还提到代码在没有数据的情况下插入新行,因此提交错误的文件是不可能的。他写道,
除了自动递增的userID之外,在任何表行中似乎都没有任何实际数据
很抱歉,应该提到的是“submit.php”是“clientsubmit.php”,只是发布此线程时的一个打字错误,只是编辑以反映它是什么。Sorry请在执行查询(第4部分)之前尝试回显“$sql”变量,以确保查询符合要求并且包含所需的值。您好,sumitb,谢谢,我刚刚添加了该变量,但看起来变量没有得到任何值。“echo$txtNam;”请复制粘贴clientsubmit.php页面的输出。您应该在检查连接的if语句中添加一个
die()
,而不仅仅是
echo
,因为如果将来您无法连接到数据库,那么您的脚本在完成
if
块后也将继续。请记住
mysql\u real\u escape\u string()
函数在内部使用连接变量,如果连接变量不正确,它将返回null。。。。还有一次,请尝试删除mysql\u real\u escape\u string函数……您好,sumitb,我删除了real\u escape部分,它们现在似乎正在获取值,但这会让我的脚本对SQL注入开放,所以建议现在做什么?我还添加了die();给国际单项体育联合会的声明啊。如果它在没有mysql\u real\u escap\u string()的情况下工作,那么您的连接对象可能有问题,您使用的是哪个版本的PHP???此外,您正在使用
mysqli\u connect
进行连接。因此,您只能使用“mysqli\u real\u escape\u string”函数。。它的语法不同;它也将连接对象作为参数,在字符串旁边…尝试更改它,如果仍然不工作,则报告..谢谢!我把它们都改成了mysqli,但是多亏了用户sumitb,我们发现变量$txtNam ect似乎没有从表单post收集数据,或者更好的是,使用准备好的语句
echo "Made it here! 3 ";
echo "   ";
echo $txtNam;
echo "   ";
echo $txtEmail;
echo "   ";
echo $txtSlots;
echo "   ";
echo $txtSecurity;
echo "   ";
<?php
// Create connection
$con=mysqli_connect("xxxx","xxxx","xxxx","xxxx");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  die();
  }
$txtNam = mysqli_real_escape_string($con, $_POST["name"]);
$txtEmail = mysqli_real_escape_string($con, $_POST["email"]);
$txtSlots = mysqli_real_escape_string($con, $_POST["slotcount"]);
$txtSecurity = mysqli_real_escape_string($con, $_POST["passcode"]);
$sql = "INSERT INTO accounts (name, email, slotCount, securityCode)     Values('$txtNam','$txtEmail','$txtSlots','$txtSecurity')";
if (!mysqli_query($con,$sql))
  {
  die('Error: ' . mysqli_error($con));
  }

mysqli_close($con);
?>
$txtNam = mysqli_real_escape_string($con, $_POST["name"]);
$txtEmail =  mysqli_real_escape_string($con,$_POST["email"]);
$txtSlots = mysqli_real_escape_string($con,$_POST["slotcount"]);
$txtSecurity = mysqli_real_escape_string($con,$_POST["passcode"]);