如何选择最新ID在同一PHP文件的新表中创建新行?
我想通过输入名称在餐厅表中创建一个餐厅。RestaurantID(RID)是自动递增的。 但同时,我想在RATING表中用最新添加的RID创建一行 其他帖子中的几个问题与我的情况不同,我不知道如何解决这个问题。我必须向这里寻求帮助 此代码的测试结果是:{“成功”:0,“消息”:“无法创建此餐厅的评级表!” 已成功添加餐厅名称,但分级表不起作用。。有什么想法吗?或者我应该用另一种方法将RID添加到评级表中 这是我的密码:如何选择最新ID在同一PHP文件的新表中创建新行?,php,mysql,Php,Mysql,我想通过输入名称在餐厅表中创建一个餐厅。RestaurantID(RID)是自动递增的。 但同时,我想在RATING表中用最新添加的RID创建一行 其他帖子中的几个问题与我的情况不同,我不知道如何解决这个问题。我必须向这里寻求帮助 此代码的测试结果是:{“成功”:0,“消息”:“无法创建此餐厅的评级表!” 已成功添加餐厅名称,但分级表不起作用。。有什么想法吗?或者我应该用另一种方法将RID添加到评级表中 这是我的密码: $response = array(); $name = "test1
$response = array();
$name = "test1";
if ($rid = addRestaurant($name)){
echo "$rid"; // now it displays the right id
if(addRating($rid) == true){
$response["success"] = 1;
$response["message"] = "Restaurant Successfully Created!";
echo json_encode($response);
}else{
$response["success"] = 0;
$response["message"] = "Fail to create Rating table for this restaurant!";
echo json_encode($response);
}
}else{
$response["success"] = 0;
$response["message"] = "Fail to create Restaurant! Please Try Again Later!";
echo json_encode($response);
}
function addRestaurant($name){
// mysql inserting a new row
$result = mysql_query("INSERT INTO restaurants (Name)VALUES('$name')");
// check if row inserted or not
if ($result) {
$rid = mysql_insert_id();
echo "$rid"; //this gives me correct RID of "84" latest one.
return $rid;
} else {
return false;
}
}
function addRating($rid){
echo "$rid"; // here also the latest ID. but why return false?
$result = mysql_query("INSERT INTO `rating`(`Clealiness`, `Service`, `Quality`, `RID`) VALUES ('0', '0', '0', $rid");
if ($result) {
return true;
} else {
return false;
}
?>
首先,不要使用mysql\u查询!它已经被弃用(或者很快就会被弃用),并且很容易引入 相反,请使用类似的库 从这里开始,执行INSERT查询并在另一个查询中使用它 一些伪代码:
$queryObj = $dbHandler->prepare('statement');
$queryObj->execute();
$last_id = $dbHandler->lastInsertId();
$dbHandler->prepare('another statement with $last_id');
首先,不要使用mysql\u查询!它已经被弃用(或者很快就会被弃用),并且很容易引入 相反,请使用类似的库 从这里开始,执行INSERT查询并在另一个查询中使用它 一些伪代码:
$queryObj = $dbHandler->prepare('statement');
$queryObj->execute();
$last_id = $dbHandler->lastInsertId();
$dbHandler->prepare('another statement with $last_id');
你在这里很重要。如果使用两个表的id的增量id,可以使用mysqli_insert_id()从第一个查询中获取最后一个插入的id 1) 添加餐厅 2) 在代码中选择上一个插入id,如上所述 3) 附加到您的评级查询
试试Julian H.Lam的PDO,因为它也很好用。在这里,表结构很重要。如果使用两个表的id的增量id,可以使用mysqli_insert_id()从第一个查询中获取最后一个插入的id 1) 添加餐厅 2) 在代码中选择上一个插入id,如上所述 3) 附加到您的评级查询
试试Julian H.Lam的PDO,因为它也很好用。这是一项简单的任务 如果查询成功执行,则addRestaurant代码不应返回true,而应返回最后插入的id。您的代码如下所示
$response = array();
$name = "test1";
if ($rid = addRestaurant($name) == true){
if(addRating($rid) == true){
$response["success"] = 1;
$response["message"] = "Restaurant Successfully Created!";
echo json_encode($response);
}else{
$response["success"] = 0;
$response["message"] = "Fail to create Rating table for this restaurant!";
echo json_encode($response);
}
}else{
$response["success"] = 0;
$response["message"] = "Fail to create Restaurant! Please Try Again Later!";
echo json_encode($response);
}
function addRestaurant($name){
// mysql inserting a new row
$result = mysql_query("INSERT INTO restaurants (Name)VALUES('$name')");
// check if row inserted or not
if ($result) {
$rid = mysql_insert_id(); //This will return the last inserted id
return $rid;
} else {
return false;
}
}
function addRating($rid){
//$test = mysql_query("SELECT MAX(RID) FROM restaurants");
//$return = mysql_fetch_assoc($test);
//$rid = $return['MAX(RID)'];
$result = mysql_query("INSERT INTO rating(`Clealiness`, `Service`, `Quality`, `RID`) VALUES (0, 0, 0, $rid");
if ($result) {
return true;
} else {
return false;
}
?>
希望这能解决你的问题。
谢谢这是件容易的事 如果查询成功执行,则addRestaurant代码不应返回true,而应返回最后插入的id。您的代码如下所示
$response = array();
$name = "test1";
if ($rid = addRestaurant($name) == true){
if(addRating($rid) == true){
$response["success"] = 1;
$response["message"] = "Restaurant Successfully Created!";
echo json_encode($response);
}else{
$response["success"] = 0;
$response["message"] = "Fail to create Rating table for this restaurant!";
echo json_encode($response);
}
}else{
$response["success"] = 0;
$response["message"] = "Fail to create Restaurant! Please Try Again Later!";
echo json_encode($response);
}
function addRestaurant($name){
// mysql inserting a new row
$result = mysql_query("INSERT INTO restaurants (Name)VALUES('$name')");
// check if row inserted or not
if ($result) {
$rid = mysql_insert_id(); //This will return the last inserted id
return $rid;
} else {
return false;
}
}
function addRating($rid){
//$test = mysql_query("SELECT MAX(RID) FROM restaurants");
//$return = mysql_fetch_assoc($test);
//$rid = $return['MAX(RID)'];
$result = mysql_query("INSERT INTO rating(`Clealiness`, `Service`, `Quality`, `RID`) VALUES (0, 0, 0, $rid");
if ($result) {
return true;
} else {
return false;
}
?>
希望这能解决你的问题。
谢谢你谢谢你的建议!顺便问一下,PDO是一种新型的mySQL编码吗?因为我是mysql的初学者。简而言之,PDO是一个抽象到数据库服务器的连接的扩展,并自动处理其他任务,例如正确转义传入的值。虽然一开始学习可能会让人感到害怕,但学习它的工作原理是值得的,因为坚持使用
mysql.*
type函数的好处远远大于缺点感谢您的建议!顺便问一下,PDO是一种新型的mySQL编码吗?因为我是mysql的初学者。简而言之,PDO是一个抽象到数据库服务器的连接的扩展,并自动处理其他任务,例如正确转义传入的值。虽然一开始学习可能会让人感到害怕,但学习它的工作原理是值得的,因为坚持使用mysql.*
type函数的好处远远大于缺点感谢您的建议,它仍然显示出相同的错误。。我可以知道你的代码第3行有什么错误吗?我只是复制了你的代码并对其进行了调整。如果可能有错误,但我不能说没有看到错误。您可以启用错误吗?将错误报告(1)放在该php文件的顶部,然后编辑您的帖子并放置您收到的错误消息。这样我就能看到错误并相应地帮助您。我已经编辑了我尝试的最新版本。。触发的结果(addRating==true)为false。为什么插入错误?我在mySQL的查询中尝试过,它是有效的。。奇怪..谢谢你的建议,它仍然显示相同的错误。。我可以知道你的代码第3行有什么错误吗?我只是复制了你的代码并对其进行了调整。如果可能有错误,但我不能说没有看到错误。您可以启用错误吗?将错误报告(1)放在该php文件的顶部,然后编辑您的帖子并放置您收到的错误消息。这样我就能看到错误并相应地帮助您。我已经编辑了我尝试的最新版本。。触发的结果(addRating==true)为false。为什么插入错误?我在mySQL的查询中尝试过,它是有效的。。奇怪的