1

テキストエリアからデータベースにタグを挿入していますが、アルバム INT またはトラック INT を挿入しようとすると、データベースに 0 と表示されるという問題があります。PHP 出力が 1 に等しい場合、値は 4 つの個別のクエリでデータベースに挿入されると、常に 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

データを int に変換していますか?

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

これらの変数の値は stringNULLであり、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);

開発中にコメントを外して、diemysql に送信されている実際の文字列を確認できるようにします。

別の答え

アルバムとトラックの列にはどのタイプがありますか。そこに文字列が必要だと思いますが、int. それをに変更するvarchar(128)と、それでうまくいくはずです。

于 2012-10-24T19:36:39.750 に答える