我有这个代码,但我不能让它在我的sql表中插入任何东西? 回声部分工作正常..
/* We have succesfully resized and created thumbnail image
We can now output image to user's browser or store information in the database */
$s_id = $_GET['id'];
$conn = mysqli_connect('localhost', 'user', 'pass', 'table');
$query = "INSERT INTO table ( sp_s-id, sp_thump, sp_orig ) VALUES
( '$s_id', '$thumb_save_folder', '$image_save_folder' )";
//added $conn variable in order to connect to our database.
mysqli_query($conn, $query);
mysqli_close($conn);
echo '<div align="center">';
echo '<img src="uploads/'.$thumb_prefix . $new_file_name.'" >alt="Thumbnail">';
echo '<br />';
echo '<img src="uploads/'. $new_file_name.'" alt="Resized Image">';
echo $s_id;
echo '</div>';
imagedestroy($image_res); //freeup memory
答案 0 :(得分:1)
替换它:
$query = "INSERT INTO table ( sp_s-id, sp_thump, sp_orig ) VALUES
( '$s_id', '$thumb_save_folder', '$image_save_folder' )";
有了这个:
$query = "INSERT INTO `table` ( `sp_s-id`, `sp_thump`, `sp_orig` ) VALUES
( '$s_id', '$thumb_save_folder', '$image_save_folder' )";
SQL服务器(以及PHP或大多数其他语言)无法处理带有减号( - )的列/表/变量名称,因此您需要将它们放入引号/标记中。尽管对列/表/变量名称(仅表示数字,字符(A-Z)和下划线,但不是以数字开头)遵循规则[_A-Za-z][0-9_A-Za-z]*
,但强烈建议这样做。
此外,您应该总是验证或输入强制转换用户输入,如下所示(验证):
$s_id = $_GET['id'];
if (!is_numeric($s_id)) {
// invalid input / possible hacking attempt?
}
或者这个(类型演员):
$s_id = (int) $_GET['id'];
答案 1 :(得分:-2)
你的语法错了。试试这个。
如果你没有使用面向对象的模式,我建议在mysqli上使用mysql。
$conn = mysql_connect('localhost', 'username', 'password');
$db = mysql_select_db('databasename', $conn);
$query ="INSERT INTO tablename ( sp_s-id, sp_thump, sp_orig ) VALUES ( '{$s_id}', '{$thumb_save_folder}', '{$image_save_folder}' )";
$result = mysql_query($query);
mysql_close($conn);
试试这个。它应该插入表中。在双引号内使用时,请确保将变量放在{}中。