gpt4 book ai didi

php - mysqli_insert_id 返回 0

转载 作者:行者123 更新时间:2023-11-29 13:46:17 25 4
gpt4 key购买 nike

我必须使用对另一个表(FK)中的记录的引用。另一个表中的记录可能存在,也可能不存在,因此我可以使用它的 ID,也可以插入一个新记录,然后使用它的 ID。

我有以下代码:

$con=mysqli_connect("localhost","root","test","db_site");

// get existing levels
$levelIdSQL = "SELECT idlevel from levels where levelstring = $level";
$levels = mysqli_query($con, $levelIdSQL);

$levelID = -1;
if ($levels['num_rows'] > 0) {
echo "<br><br>some results<br><br>";
// we already have a level, use its id when updating
$row = $levels->fetch_assoc();
$levelID = $row['idlevel'];
} else {
// we must insert this string in the levels table, then use its id
echo "<br>running query: " . "INSERT INTO `db_site`.`levels` ('levelstring') values ('$level');";
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
} else {
echo "<br><br>connected OK<br><br>";
}
$rez = mysqli_query($con, "INSERT INTO `db_site`.`levels` ('levelstring') values ('$level');");
$levelID = mysqli_insert_id($con);
}
echo "<br><br>LEVEL ID: " . $levelID;

我的levels表有一个autoinc“idlevel”字段,并且使用MySQL Workbench/命令行界面运行相同的SQL可以很好地插入记录。但是,mysqli_insert_id 返回 0,并且没有插入任何记录。

我做错了什么?

编辑:根据jterry的建议,我调用了die(),它返回:“您的SQL语法有错误;请检查与您的MySQL服务器版本相对应的手册,以获取在''levelstring'附近使用的正确语法” ”。所以我改变了这一点:

$rez = mysqli_query($con, "INSERT INTO `db_site`.`levels` ('levelstring') values ('$level');");

进入此:

$rez = mysqli_query($con, "INSERT INTO `db_site`.`levels` (levelstring) values ('$level');");

现在一切都好。

最佳答案

尝试一下,您应该在列名称周围使用反引号而不是引号。

$rez = mysqli_query($con, "INSERT INTO `db_site`.`levels` ( `levelstring`) 
VALUES ('$level') ");

关于php - mysqli_insert_id 返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17370878/

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