Php mysql_insert_id();成功插入行后不返回值
我发誓我已经在这个网站和其他网站上对所有其他类似的问题倾注了很多。。。但我想我只是错过了一些东西。希望有人能指出一个愚蠢的错误,那就是我的大脑在瞒着我 我的脚本将表单中的值插入到名为notes的表中 此时,它通过一个名为newRelationship的函数在一个名为relationships的表中创建两个条目 变量$note\u id的值通过mymysql\u insert\u id填充;并传递到上述函数中 执行代码时,条目将成功添加到notes中,id列将被赋予一个具有自动增量的正确值 接下来,将两个条目添加到关系表中 但是,我的mysql\u insert\u id不断抛出一个值0,而不是新的行id 我一辈子都不知道自己做错了什么。我甚至尝试从头开始创建一个新表,结果都是一样的。更重要的是,我在项目的其他文件中使用了几乎相同的代码,没有任何问题。有人知道我做错了什么吗 有问题的代码Php mysql_insert_id();成功插入行后不返回值,php,mysql,mysql-insert-id,Php,Mysql,Mysql Insert Id,我发誓我已经在这个网站和其他网站上对所有其他类似的问题倾注了很多。。。但我想我只是错过了一些东西。希望有人能指出一个愚蠢的错误,那就是我的大脑在瞒着我 我的脚本将表单中的值插入到名为notes的表中 此时,它通过一个名为newRelationship的函数在一个名为relationships的表中创建两个条目 变量$note\u id的值通过mymysql\u insert\u id填充;并传递到上述函数中 执行代码时,条目将成功添加到notes中,id列将被赋予一个具有自动增量的正确值 接下来
if ($user->is_loaded())
{
if($_POST['project_id']) {
$project_id = $_post['project_id'];
$long_note = $_POST['long_note'];
$created_by = $_POST['created_by'];
$note_sql="INSERT INTO notes (`long_note`, `added`, `created_by`) VALUES ('$long_note', '$timenow', '$created_by')";
if (!mysql_query($note_sql,$con))
{
die('Error: ' . mysql_error($note_sql));
}
else {
echo "note created Creating relationship ";
$note_id = mysql_insert_id();
echo $note_id;
newRelationship($project_id, "project", $note_id, "note");
newRelationship($client_id, "client", $note_id, "note");
echo "note added successfuly";
}
以及我的职能
function newRelationship($parent_id, $parent_type, $child_id, $child_type)
{
global $sql, $con, $timenow;
$relationship_sql="INSERT INTO `relationships` (`parent_id`, `parent_type`, `child_id`, `child_type`) VALUES ('$parent_id', '$parent_type', '$child_id', '$child_type');";
if (!mysql_query($relationship_sql,$con))
{
die('Error: ' . mysql_error($relationship_sql));
}
else {
echo $parent_type." ".$parent_id." realationship with ".$child_type." ".$child_id." successful ";
}
}
根据@jack的建议,这里是我的notes表的sql
CREATE TABLE `notes` (
`id` int(10) unsigned zerofill NOT NULL AUTO_INCREMENT,
`contact_id` int(10) NOT NULL,
`client_id` int(10) NOT NULL,
`status` text NOT NULL,
`long_note` text NOT NULL,
`added` int(11) NOT NULL,
`modified` int(11) NOT NULL,
`edit_by` int(10) NOT NULL,
`short_note` text NOT NULL,
`created_by` int(10) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=295 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC
根据:
上一次查询为自动增量列生成的ID
成功,如果上一个查询未生成自动增量,则为0
值,如果未建立MySQL连接,则为FALSE
文档指出,如果上次执行的查询未生成自动增量值,则只能返回0,这意味着notes中的主键列未正确设置为自动增量。我建议仔细检查notes中的主键列是否已设置为自动增量,再检查一次也不会有什么坏处
查看示例代码时,您会在插入后立即调用mysql\u insert\u id,因此中间不应该有任何冲突查询来扭曲结果
我看到的唯一可能导致问题的地方是,您正在将MySQL资源传递给MySQL\u query,而不是传递给MySQL\u insert\u id:
因此,资源可能存在冲突。尝试将您的呼叫更新到:
$note_id = mysql_insert_id($con);
我没有看到真正调用mysql\u insert\u id或newRelationship的代码。没有这些,我们就无法诊断问题。而且。。。新到这个网站,所以仍然试图得到这里的控制窍门。。。但我的第一段代码的后半部分似乎被切断了$注\u id=mysql\u insert\u id;echo$note_id;新关系$project\u id,project,$note\u id,note;新关系$client\u id,client,$note\u id,note;成功添加回音音符;}@JeromeGarrison:你不用,只要缩进块,它们就会自动编码;如果你想在斟酌这个问题的时候给自己倒杯你喜欢的饮料,考虑添加Studio CREATE表注释的输出;我在我原来的帖子中更新了我的示例代码。它现在包括请求mysql\u insert\u id的部分。就我所见,在我的insert和mysql\u insert\u idoh my gosh之间没有执行其他查询。。。成功了!我发誓我已经试过了!::头撞在桌子上::一定是其他一些错误,所有这些调试都让我修复了。谢谢你的帮助和耐心!!:
$note_id = mysql_insert_id($con);