我试图多次插入一个可以在其中包含3到6个int的数组。
我创建了这个来解决问题:
CREATE TABLE name(
ID INT AUTO_INCREMENT NOT NULL,
NUM1 INT NOT NULL,
NUM2 INT NOT NULL,
NUM3 INT NOT NULL,
NUM4 INT,
NUM5 INT,
NUM6 INT,
PRIMARY KEY(ID)
)DEFAULT CHARSET = latin1;
最重要的是,我创建了以下代码,以便我可以插入数据。它接收$num
- 一个int,它告诉我们有多少个数字不是NULL,而是一个带有整数的数组。
function inserDataBase($num,$array)
{
$x = array();
$x[0] = NULL;
$x[1] = NULL;
$x[2] = NULL;
$x[3] = NULL;
$x[4] = NULL;
$x[5] = NULL;
for($i=0;$i<$num;$i++){
$x[$i] = $array[$i];
}
//connetion to the Server
$username = "root";
$password = "";
$hostname = "localhost";
$database = "tournament";
$dbhandle = mysql_connect($hostname, $username, $password)
or die("Unable to connect to MySQL");
$conn = mysql_select_db($database)
or die("Unable to connect to the selected database");
$sql = "INSERT INTO 'name' VALUES ($x[0], '$x[1]', '$x[2]', '$x[3]', '$x[4]', '$x[5]')";
mysql_query($sql,$dbhandle)
or die(mysql_error());
mysql_close($dbhandle);
}
我遇到的问题:
答案 0 :(得分:1)
通过在插入的值周围加上单引号,您可以将它们更改为字符串 - 这样您就不会插入记录。
编辑:此外,在MySQL中,您不要在列名称周围添加单引号,而是使用反引号`字符。我已经更新了除了初始SQL以外的所有SQL以显示它。
如果将PHP代码中的变量更改为$x[0] = 'NULL';
,则可以使用以下内容将空值插入到列中:
$sql = "INSERT INTO 'name' VALUES ($x[0], $x[1], $x[2], $x[3], $x[4], $x[5])";
您最初使用的代码正在解析如下:
INSERT INTO `name` VALUES (1, 2, 3, '', '', '')
现在,变量最初被设置为字符串,SQL将被解析为:
INSERT INTO `name` VALUES (1, 2, 3, null, null, null)
编辑:话虽如此,我确实认为其中一条评论是正确的,你不能解析字符串中的数组,所以你的代码需要看起来像:
$sql = "INSERT INTO `name` VALUES (".$x[0].", ".$x[1].", ".$x[2].", ".$x[3].", ".$x[4].", ".$x[5].")";
答案 1 :(得分:0)
此代码有效。具有上述所有修改,还包括一个创建sql查询的循环。
$array = array(1,2,3);
$num = count($array);
inserDataBase($num,$array);
function inserDataBase($num,$array)
{
for($i=0;$i<$num;$i++){
if $x[$i] = $array[$i];
}
for($i=$num;$num<=5;$i++){
if $x[$i] = NULL;
}
//connetion to the Server
$username = "root";
$password = "";
$hostname = "localhost";
$database = "tournament";
$dbhandle = mysqli_connect($hostname, $username, $password) or die("Unable to connect to MySQL");
$conn = mysqli_select_db($dbhandle,$database) or die("Unable to connect to the selected database");
$sql = "INSERT INTO name VALUES (''";
$count = 0;
$values = '';
for($count=0;$count<=5;$count++){
$values .= ",".$x[$count];
}
$sql .= $values . ")";
echo $sql;
mysqli_query($dbhandle,$sql) or die(mysql_error());
mysqli_close($dbhandle);
}