我添加了一个blob字段,通过php表单将图像添加到我的MYSQL数据库,现在我在包含新字段的行上收到一条未定义的错误消息,并且该字段的文件没有上传,但所有文本字段已添加到数据库中。
这是我的表格:
<form action="http://www.yeahthatrocks.com/update.php" method="post" enctype="multipart/form-data">
Game Name: <input name="game_name" type="text" size="25" maxlength="255" /><br></br>
Release Date: <input name="release_date" type="text" size="25" /><p></p>
Cover Image: <input type="file" name="cover" id="cover"><br><br>
<p>Console:
<select name="game_console">
<option value="PS3">PS3</option>
<option value="Xbox 360">Xbox 360</option>
<option value="Both">Both</option>
</select>
Game Category:
<select name="game_category">
<option value="Retail">Retail</option>
<option value="PSN">PSN</option>
<option value="Arcade">Arcade</option>
<option value="DLC">DLC</option>
</select>
Game Type:
<select name="game_type">
<option value="Action">Action</option>
<option value="Action RPG">Action RPG</option>
<option value="Adventure">Adventure</option>
<option value="Board">Board</option>
<option value="Card">Card</option>
<option value="Casino">Casino</option>
<option value="Educational">Educational</option>
<option value="Fighting">Fighting</option>
<option value="Flight">Flight</option>
<option value="Game Show">Game Show</option>
<option value="Hunting">Hunting</option>
<option value="Music">Music</option>
<option value="Other">Other</option>
<option value="Pinball">Pinball</option>
<option value="Platformer">Platformer</option>
<option value="Puzzle">Puzzle</option>
<option value="Racing">Racing</option>
<option value="RPG">RPG</option>
<option value="Shooter">Shooter</option>
<option value="Sports">Sports</option>
<option value="Strategy">Strategy</option>
<option value="Virtual Pet">Virtual Pet</option>
</select>
</p>
<input name="submit" type="submit" value="upload" />
</form>
这是update.php的相关部分:
$sql="INSERT INTO games (game_name, release_date, game_category, game_type, game_console, cover)
VALUES
('$_POST[game_name]','$_POST[release_date]','$_POST[game_category]','$_POST[game_type]','$_POST[game_console]','$_POST[cover]')";
mysql_query($sql);
它与新字段是二进制有关吗?我上传到该字段的文件是11kb。
答案 0 :(得分:1)
首先,您需要在将它们放入MySQL时转义所有这些$_POST
变量,阅读SQL注入漏洞和mysql_read_escape_string()
;
您在插入$_POST['game_type']
和$_POST['console']
时触发了错误,但您没有表单字段。
修改强>
您的$_POST
缺少'封面'字段,因为它是文件上传,因此会以$_FILES
变量形式出现,您必须在uploading files with PHP上阅读该变量因为你完全错过了这一点逻辑。
答案 1 :(得分:1)
您没有“game_category”“game_type”,“game_console”等的输入字段,因此$ _POST中不存在这些字段,并且可能会启用PHP警告(未定义的索引是警告)。并且你永远不应该将$ _POST直接插入数据库,至少在插入之前使用mysql_real_escape_string函数。阅读SQL注入,您将了解原因。
答案 2 :(得分:1)
您收到一个未定义的索引错误,因为$ _POST不包含game_category和game_type以及game_console。 (或任何字段留空)
此外: