gpt4 book ai didi

php - 新数据库导入,mysql_insert_id() 返回 0

转载 作者:行者123 更新时间:2023-11-30 00:45:14 25 4
gpt4 key购买 nike

我在网站的管理端有一个简短的脚本,它将上传和图像或上传到数据库的链接。我最近将网站从 hostpapa 服务器移至 godaddy 服务器。这个脚本在 hostpapa 上运行得很好。导入到 godaddy 服务器后,只能上传图像。上传链接失败,id返回0。这很奇怪,因为设置了auto_increment,上传图片证明auto_increment工作得很好。不知道为什么链接上传的 id 返回 0,并且当我尝试上传链接时没有任何内容插入到数据库中。

include '../connect.php';

if ($_POST['upload'])
{
//get file attributes.
$name = $_FILES['myfile']['name'];
$tmp_name = $_FILES['myfile']['tmp_name'];
$title = $_POST['title'];
$url = $_POST['url'];
$type = $_POST['type'];


if ($name)
{
$location = "imgs/$name";
$dir = "../imgs/$name";
move_uploaded_file($tmp_name,$dir);

$query = mysql_query("INSERT INTO `links` VALUES ('','$title','','$location','$type')");
//last id
$id = mysql_insert_id();
echo $id,$location,$title;
die ("Image successfully uploaded.");

}

//this bit below is what doesn't work as it should.
$query = mysql_query("INSERT INTO `links` VALUES ('','$title','$url','','$type')");
//last id
$id = mysql_insert_id();
echo $id,$url,$title;
die ("Link successfully loaded.");

}

最佳答案

你的问题几乎肯定是 magic quotes 。 GoDaddy 默认启用魔术引号,这很容易破坏您的查询,特别是因为您仅将数据包装在 ' 中并且不对输入进行任何转义。尝试通过将其放在脚本顶部来关闭魔术引号,问题就会消失。

if (get_magic_quotes_gpc()) {
function magicQuotes_awStripslashes(&$value, $key) {
$value = stripslashes($value);
}
$gpc = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST);
array_walk_recursive($gpc, 'magicQuotes_awStripslashes');
}

此外,您应该知道 mysql_* 已被弃用并且不安全——您应该使用 MySQLi 或 PDO。

最后,您对 SQL 注入(inject)持开放态度。您说这是网站的管理区域,但您不能假设没有任何不好的内容会出现在该页面上。对查询中使用的每个变量使用准备好的语句或至少使用 mysql_real_escape_string()

关于php - 新数据库导入,mysql_insert_id() 返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21435660/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com