PHP这段代码有什么问题?

时间:2012-12-09 17:40:46

标签: php mysql insert

我对php很新,并且遇到以下代码块问题。由于某种原因,当所有已被执行时,我被发送到:auctionx.php?id =“。当它应该是id = 1.我试图从$ new_id变量得到”1“。有人请指出我的错误?提前多多感谢.PS当我对我的项目进行排序时,就功能而言,我会告诉我所知道的是对mysqli的合理翻译。再次感谢。

哦,还有最后一件事,我意识到我可能会缺少捷径。在INSERT查询之后,如果你知道我的意思,一些代码可以直接知道新id是什么?保存我做下一个查询。它就像在第一个值字段中使用“$ new_id”一样简单。希望很清楚。

if ($check_1 == 0)
{

//Then need to register the auction...so...

$auc_update = mysql_query("

INSERT INTO auction VALUES ('','$afil','$user','','','','','')

//Should the first be "$new_id" here (above) i mean


");

$row_1 = mysql_query("

SELECT * FROM auction WHERE host = $user AND auc_no = $afil  

");

//Find
$new_id = $row_1['id'];

//Id obtained
//Go to:

header ("location:auctionx.php?id='$new_id'");

}

5 个答案:

答案 0 :(得分:1)

//Find
$new_id = $row_1['id'];

尝试将mysql_fetch_assoc()添加到new_id,例如:

$new_id = mysql_fetch_assoc($row_1)['id'];

答案 1 :(得分:1)

mysql_query()后,您必须使用mysql_fetch_assoc()

检索结果集
$result_1 = mysql_query("SELECT * FROM auction WHERE host = $user AND auc_no = $afil");
$row_1 = mysql_fetch_assoc($result_1);
$new_id = $row_1['id'];

答案 2 :(得分:0)

首先,您错过了一个mysql_xxx()函数调用。 mysql_query()只是将查询发送到mysql,但对于SELECT,您需要检索如下结果:

$result = mysql_query("SELECT * FROM auction WHERE host = $user AND auc_no = $afil");
$row1 = mysql_fetch_assoc($result);
$new_id = $row1['id'];
header ("Location: auctionx.php?id=$new_id");

有关所用功能的更多信息: mysql_query() mysql_fetch_assoc()

然后你真的应该确保你的查询有效,所以检查返回值并检查它是否为false,否则显示错误:

$result = mysql_query("SELECT * FROM auction WHERE host = $user AND auc_no = $afil");
if(false == $result) {
    echo "Mysql error '" . mysql_errno() . "' : " . mysql_error();
}

然后,您想要的是检索与数据库中最后一次插入相关联的ID。您不需要SELECT,只需使用mysql_insert_id()即可。

考虑到这一切,您的代码将成为:

if ($check_1 == 0)
{
$auc_update = mysql_query("INSERT INTO auction VALUES ('','$afil','$user','','','','','')");
if(false == $auc_update ) {
    echo "Mysql error '" . mysql_errno() . "' : " . mysql_error();
} else {
    $new_id = mysql_insert_id();
    header ("Location: auctionx.php?id=$new_id");
}

另外,mysql_xxx()被视为已弃用,您确实应该避免使用它并尝试使用mysqliPDO

答案 3 :(得分:0)

语法错误:您试图在sql语句中添加注释。此外,您需要在调用后获取行:

<?php
if ($check_1 == 0){

    //Then need to register the auction...so...

    $auc_update = mysql_query("INSERT INTO auction VALUES ('','$afil','$user','','','','','')");

    //Should the first be "$new_id" here (above) i mean

    $row_1 = mysql_query("SELECT * FROM auction WHERE host = $user AND auc_no = $afil ");
    $row_1 = mysql_fetch_assoc($row_1);
    //Find
    $new_id = $row_1['id'];

    //Id obtained
    //Go to:

    header ("location:auctionx.php?id='$new_id'");
}?>

答案 4 :(得分:0)

问题在于:

$new_id = $row_1['id'];

在执行此操作之前,您应该mysqli_fetch_array()


只是一个建议:

最好使用PDO或mysqli_*代替mysql_