0

我对 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'");

}
4

5 回答 5

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

尝试添加mysql_fetch_assoc()喜欢new_id

$new_id = mysql_fetch_assoc($row_1)['id'];
于 2012-12-09T17:44:42.040 回答
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'];
于 2012-12-09T17:45:43.127 回答
0

首先,您错过了一个mysql_xxx()函数调用。mysql_query()只需将查询发送到 mysql 但对于 aSELECT然后您需要检索这样的结果:

$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()

那么你真的应该确保你的查询有效,所以检查返回值并检查它是否不是假的,否则显示错误:

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

然后,您似乎想要检索与数据库中最后一次插入关联的 id。您不需要 a 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

于 2012-12-09T17:42:20.920 回答
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'");
}?>
于 2012-12-09T17:45:03.623 回答
0

问题在这里:

$new_id = $row_1['id'];

mysqli_fetch_array()在执行此操作之前,您应该这样做。


只是一个建议:

最好使用 PDO 或mysqli_*代替mysql_.

于 2012-12-09T17:46:54.357 回答