插入表格不起作用

时间:2014-10-26 13:47:08

标签: php mysqli insert

我有这个代码,但我不能让它在我的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

2 个答案:

答案 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);

试试这个。它应该插入表中。在双引号内使用时,请确保将变量放在{}中。