我有一个Song Uploading Form,我不会在
MySQL中直接输入NULL值,如:mysql_query(“INSERT INTO songs(album_id)VALUES(NULL)”.我将从
PHP变量中插入NULL到MySQL,并且肯定对SQL安全注射.
我的SQL表是:
CREATE TABLE IF NOT EXISTS `songs` (
`song_id` int(4) NOT NULL,
`song_name` varchar(64) NOT NULL,
`artist_id` int(4) NOT NULL,
`album_id` int(4) DEFAULT NULL,
`genre_id` int(4) DEFAULT NULL
PRIMARY KEY (`song_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
我的FORM和FORM HANDLER代码是(PHP,HTML),如下所示:
if(isset($_REQUEST['SongForm']))
{
$song_name = trim($_POST['song_name']);
$artist_id = trim($_POST['artist_id']);
$album_id = $_POST['album_id']; if($album_id == 0) { $album_id = 'NULL'; } // I even tried using NULL instead of 'NULL'
$genre_id = $_POST['genre_id']; if($genre_id == 0) { $genre_id = 'NULL'; }
$query = mysql_query("
INSERT INTO `songs` (`song_name`, `artist_id`, `album_id`, `genre_id`)
VALUES ('".$song_name."', '".$artist_id."', '".$album_id."', '".$genre_id."')
");
}
?>
Song Name | |
Artist Name | No Artist Jennifer Lopez |
Album Name | No Album Rebirth |
Genre Name | No Genre Epic Records |
但在此之后我得到了MySQL中的结果:
序列号:1
歌名:我,爱
艺术家ID:1
专辑ID:1
流派ID:1
现在,当我没有为任何歌曲选择“专辑ID”和“类型ID”时,它应该在MySQL内输入“NULL”.但它输入“0”.
因此结果如下:
序列号:1
歌名:我,爱
艺术家ID:1
专辑ID:0
流派ID:0
请给我一个解决方案,以便在选择“No Album”和“No Genre”时输入NULL.
请不要让我困惑解释不相关的主题.
感谢支持解释答案的朋友,尽管任何答案都没有给我正确的解决方案.