1

我正在将文本区域中的标签插入数据库,但问题是每当我尝试插入专辑 INT 或曲目 INT 时,它在数据库中显示为 0。如果您看到 PHP 输出值等于 1,那么当它使用四个单独的查询插入数据库时​​,它始终显示为 0。

<html>
<head><link type="text/css" rel="stylesheet" href="style.css" /></head>
<?php
include 'connect.php';
$tags = $_POST['tags'];
//$album = $_POST['album'];
//$track = $_POST['track'];
$data = preg_replace("~\s*[\r\n]+~", ', ', $tags);
$arr=explode(",",$data);
foreach ($arr as $value) {
$id = 'NULL';
$album = $_POST['album'];
$track = $_POST['track'];
echo $id;
echo "<br>";
echo $album;
echo "<br>";
echo $track;
echo "<br>";
echo $value;
echo "<br><br>";
//      echo "id ";
//      echo $album;
//      echo " ";
//      echo $track;
//      echo " ";
//      echo $value;
//      echo " inserted into the DB!<BR>";
//mysql_query("INSERT INTO tags (`id`, `album`, `track`, `tag`) VALUES (NULL, '$album', '$track', '$value')");
//mysql_query("INSERT INTO `tags` (`id`, `album`, `track`, `tag`) VALUES(NULL, '".$album."', '".$track."', '".$value."')") or die(mysql_error());
//mysql_query("INSERT INTO tags (id, album, track, tag) VALUES (NULL, '$album', '$track', '$value' )") or die(mysql_error());
mysql_query("INSERT INTO tags(id, album, track, tag) VALUES('$id' , '$album', '$track', '$value')") or die(mysql_error());
}
?>
</html>

PHP浏览器输出:

NULL
1
1
this

NULL
1
1
is

NULL
1
1
a

NULL
1
1
test

数据库在我尝试过的每个查询中显示以下条目

http://i.stack.imgur.com/d6QQ9.png

如果第一个失败,则辅助链接

http://d4rkd0s.info/tags.png

4

3 回答 3

0

试试看 :

  db_query("INSERT INTO tags(id, album, track, tag) VALUES('$id' , '$album', '$track', '$value')") or die(mysql_error());
    }
于 2012-10-24T22:02:36.630 回答
0

您是否将数据转换为整数?

mysql_query("INSERT INTO tags(album, track, tag) VALUES('(int)$album', '(int)$track', '$value')") or die(mysql_error());

于 2012-10-24T19:48:24.463 回答
0

这些变量的值是 string NULL,您希望将其设置为 null 值:

$val = null;

更好的是,最好id从 mysql 插入中删除该列:

mysql_query("INSERT INTO tags(album, track, tag) VALUES( '$album', '$track', '$value')") or die(mysql_error());

您不需要一行中插入所有值,mysql 将为您省略的值放入默认值

最后,将插入构造为:

$sql = '<mysql insert statement here>';
//die($sql); //or use echo here if you want to see multiple
mysql_query($sql);

在开发过程中取消注释die,这样您就可以看到发送到 mysql 的实际字符串

另一个答案

您在专辑和曲目栏中有什么类型。我想你想要一个字符串,看起来它们可能是int. 将其更改为varchar(128),这应该为你做。

于 2012-10-24T19:36:39.750 回答