0

我是 php 的新手,我一直在尝试将一系列变量插入到 mysql 数据库中。但是,似乎在创建表时数据没有输入到表中。我希望有人能告诉我为什么。任何帮助将非常感激。

php代码:

<?php
$team = $_POST['team'];
$int1 = $_POST['int1'];
$int2 = $_POST['int2'];
$int3 = $_POST['int3'];
$int4 = $_POST['int4'];
$int5 = $_POST['int5'];
$int6 = $_POST['int6'];
$int7 = $_POST['int7'];
$int8 = $_POST['int8'];
$int9 = $_POST['int9'];
$int10 = $_POST['int10'];
$int11 = $_POST['int11'];
$int12 = $_POST['int12'];
$int13 = $_POST['int13'];
$int14 = $_POST['int14'];
$con=mysqli_connect("127.0.0.1:3306","root","password","my_db");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }
$sqli="CREATE TABLE $team(int1 INT,int2 INT,int3 INT,int4 INT,int5 INT,int6 INT,int7 INT,int8 INT,int9 INT,int10 INT,int11 INT,int12 INT,int13 INT,int14 INT)";
if (mysqli_query($con,$sqli))
  {
  echo "<br />Table created successfully";
  }
else
  {
  echo "<br />Error creating table: " . mysqli_error();
  }
$sql="INSERT INTO $team (int1, int2 ,int3 ,int4 ,int5 ,int6 ,int7 ,int8 ,int9 ,int10 ,int11 ,int12 ,int13 ,int14 )
VALUES ($int1,$int2,$int3,$int4,$int5,$int6,$int7,$int8,$int9,$int10,$int11,$int12,$int13,$int14)";
if (mysqli_query($con,$sql))
  {
  echo "<br />Record added";
  }
else
  {
  echo "<br />Error adding record";
  }
?>
4

2 回答 2

0

首先,您永远不应该将 $_POST 值直接插入数据库,而不使用 strip_tags、htmlentities 或其他一些函数来消除可能的恶意代码。

其次,我建议查看 MySQL 文档以了解创建表的正确语法。http://dev.mysql.com/doc/refman/5.1/en/create-table.html

于 2013-04-06T14:58:43.043 回答
0

首先,在没有经过清理(验证)的情况下插入数据存在很大的安全风险。

其次,利用php中的mysqli_error http://php.net/manual/en/mysqli.error.php来记录或打印错误。

因为您在没有验证的情况下插入数据,如果任何变量$int1.... $int14为空白或未从请求脚本的表单中填写,您的 sql 查询将变得不正确并通过生成某种语法错误而失败,可以使用 mysqli_error 进行跟踪,如讨论以上。

if (mysqli_query($con,$sql))
  {
  echo "<br />Record added";
  }
else
  {
  echo "<br />Error ".mysqli_error($con);
  }

要查看任何字段留空时可能出现的问题,请考虑提交的值: $team = 'tbl_team'; $int1 = 1; $int2 = 2; $int3 = 3; $int4 = 4; $int5 = ''; $int6 = 6; $int7 = 7; $int8 = 8; $int9 = 9; $int10 = ''; $int11 = 11; $int12 = 12; $int13 = 13; $int14 = 14;

现在看看如果我们在这种情况下打印它,你的 sql 查询会发生什么:

$sql="INSERT INTO $team 
                 (int1, int2 ,int3 ,int4 ,int5 ,int6 ,int7 ,
                   int8 ,int9 ,int10 ,int11 ,int12 ,int13 ,int14 )
      VALUES                        
                   ($int1,$int2,$int3,$int4,$int5,$int6,$int7,
                   $int8,$int9,$int10,$int11,$int12,$int13,$int14)";
print $sql

将导致:

  INSERT INTO tbl_team (int1, int2 ,int3 ,int4 ,int5 ,int6 ,int7 ,int8 ,int9 ,int10 ,int11 ,int12 ,int13 ,int14 )VALUES (1,2,3,4,,6,7,8,9,,11,12,13,14)";

顺便说一句,这是一个 SQL 语法问题。

如果您完全是新手并且还没有理解一个单词,您可以尝试使用以下代码行代替您原来的代码以获得更好的机会。

$sql="INSERT INTO $team (int1, int2 ,int3 ,int4 ,int5 ,int6 ,int7 ,
                          int8 ,int9 ,int10 ,int11 ,int12 ,int13 ,int14 )
      VALUES
                        ('$int1','$int2','$int3','$int4','$int5','$int6','$int7',
                         '$int8','$int9','$int10','$int11','$int12','$int13','$int14')";
于 2013-04-06T17:45:02.833 回答