gpt4 book ai didi

php - mysql_insert_id();行插入成功后不返回值

转载 作者:可可西里 更新时间:2023-11-01 07:02:50 28 4
gpt4 key购买 nike

我发誓我已经在这个网站和其他网站上倾注了所有其他类似的问题......但我想我只是错过了一些东西。希望有人能指出我的大脑对我隐藏的愚蠢错误。 :)

我的脚本将表单中的值插入到名为“notes”的表中

此时它通过名为 newRelationship 的函数在名为“关系”的表中创建两个条目。

变量“$note_id”的值是通过我的 mysql_insert_id() 填充的;并传递给上面的函数。

当代码执行时,条目被成功地添加到“notes”中,并且“id”列被赋予了一个适当的值,并带有auto_increment。

接下来,将两个条目添加到“关系”表中(这是应该的)。

但是,我的 mysql_insert_id() 一直踢出值“0”而不是新的行 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 的建议,这里是我的笔记表的 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

最佳答案

根据 documentation :

The ID generated for an AUTO_INCREMENT column by the previous query on success, 0 if the previous query does not generate an AUTO_INCREMENT value, or FALSE if no MySQL connection was established.

文档指出,如果上次执行的查询没有生成AUTO_INCREMENT,它只能返回0应该 表示您在 notes 中的 PRIMARY KEY 列未正确设置 auto_increment。我建议仔细检查 notes 中的 PRIMARY KEY 列是否确实设置了 auto_increment(再检查一次也没坏处!)。

查看您的示例代码,您确实在插入后立即调用了 mysql_insert_id()因此它们之间不应该有任何冲突的查询来扭曲结果。 p>

我看到的唯一可能导致问题的是您将 MySQL 资源传递给 mysql_query(),而不是 mysql_insert_id():

if (!mysql_query($note_sql,$con))
...
$note_id = mysql_insert_id();

因此可能存在资源冲突。尝试将您的调用更新为:

$note_id = mysql_insert_id($con);

关于php - mysql_insert_id();行插入成功后不返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12775338/

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