【发布时间】:2013-06-18 12:43:56
【问题描述】:
我正在尝试从上一个查询中提取一个自动递增的 id。我收到异常:1305 FUNCTION THE_NAME_OF_MY_DATABASE.mysqli_insert_id 不存在。
- 这不会是语法错误吧?
-
我在哪里可以更改 mysql 以具有此功能或需要改写什么?我用谷歌搜索了这个,发现反应不一。
$action = isset( $_POST['action'] ) ? $_POST['action'] : ""; if($action == "create"){ //write the query for character creation $query = "(all of my stuff that I'm putting into another database that works)"; $query1 = "INSERT INTO playerskill (skillid, charid) VALUES ('".$_POST['skills']."',mysqli_insert_id()); "; //what happens when successful or not if( $mysqli->query($query) ) { echo $query ; echo "Character was approved."; }else{ echo "Database Error: Unable to update record."; echo $mysqli->errno; echo mysqli_error($mysqli); } } //what happens when successful or not if( $mysqli->query($query1) ) { echo $query1 ; echo "Character was approved."; }else{ echo "Database Error: Unable to update record."; echo $mysqli->errno; echo mysqli_error($mysqli); }
【问题讨论】:
-
MySQL 原生函数称为
LAST_INSERT_ID()。它的 MySQLi 包装器是 mysqli_last_insert_id()。 PDO 版本为$pdo->lastInsertId()。您正在做的是为该函数调用 PHP 的包装器。只需调用 MySQL 一个 (LAST_INSERT_ID())。 -
当心!您的代码看起来可能容易受到 SQL 注入攻击。看起来您好像没有正确地转义
$_POST['skills']。 -
你容易受到SQL injection attacks的影响,你应该自己defend。
-
".$mysqli->insert_id." -
技能帖来自一个预填充的 html 下拉菜单,因此只能下拉胡萝卜。