如何选择最新ID在同一PHP文件的新表中创建新行?

如何选择最新ID在同一PHP文件的新表中创建新行?,php,mysql,Php,Mysql,我想通过输入名称在餐厅表中创建一个餐厅。RestaurantID(RID)是自动递增的。 但同时,我想在RATING表中用最新添加的RID创建一行 其他帖子中的几个问题与我的情况不同,我不知道如何解决这个问题。我必须向这里寻求帮助 此代码的测试结果是:{“成功”:0,“消息”:“无法创建此餐厅的评级表!” 已成功添加餐厅名称,但分级表不起作用。。有什么想法吗?或者我应该用另一种方法将RID添加到评级表中 这是我的密码: $response = array(); $name = "test1

我想通过输入名称在餐厅表中创建一个餐厅。RestaurantID(RID)是自动递增的。 但同时,我想在RATING表中用最新添加的RID创建一行

其他帖子中的几个问题与我的情况不同,我不知道如何解决这个问题。我必须向这里寻求帮助

此代码的测试结果是:{“成功”:0,“消息”:“无法创建此餐厅的评级表!”

已成功添加餐厅名称,但分级表不起作用。。有什么想法吗?或者我应该用另一种方法将RID添加到评级表中

这是我的密码:

$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的查询中尝试过,它是有效的。。奇怪的