我在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";
}
?>
答案 0 :(得分:0)
首先,您不应该直接将$ _POST值插入数据库,而不使用strip_tags,htmlentities或其他一些函数来摆脱可能的恶意代码。
其次,我建议查看MySQL文档以获取创建表的正确语法。 http://dev.mysql.com/doc/refman/5.1/en/create-table.html
答案 1 :(得分: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')";