2010-09-24 94 views
1
<?php 

$userid = $_SESSION['user_id']; 
$price = $ad['price']; 
$owner = $ad['owner']; //owner of advertisement 

//make a bid for this advertisement 
$query = "INSERT INTO bids (id, ad, bidder, bid, bidwhen, owner, quantity) 
     VALUES (NULL, '$adid', '$userid','$price', now(), '$owner', 1)"; 
$bidData = mysqli_query($dbc, $query); 

$message = $_POST['message']; //message to owner 

if ($message != "") { //if message box is not empty insert comment 
    $title = $ad['title']; 
    $bidid = mysql_insert_id($bidData); //Line 123 get last id of bid insert and put it into message query for reference 

    $query = "INSERT INTO messages (sentto, sentfrom, sentat, message, title, bid) 
    VALUES ('$owner', '$userid', now(), '$message', '$title', '$bidid')"; 
    $messageData = mysqli_query($dbc, $query); 
} 

?> 

錯誤消息:mysql_insert_id()不工作

mysql_insert_id() expects parameter 1 to be resource, boolean given 

當我不傳遞參數我收到此錯誤信息:

Warning: mysql_insert_id() [function.mysql-insert-id]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\Users\Jonny\Desktop\projects\xampp\htdocs\phpprojects\lets\ad.php on line 123 

Warning: mysql_insert_id() [function.mysql-insert-id]: A link to the server could not be established in C:\Users\Jonny\Desktop\projects\xampp\htdocs\phpprojects\lets\ad.php on line 123 

解決方案代碼:

<?php 

$userid = $_SESSION['user_id']; 
$price = $ad['price']; 
$owner = $ad['owner']; //owner of advertisement 

mysqli_close($dbc); 
$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); 
if (!$dbc) { 
    die('Could not connect: ' . mysqli_error()); 
} 
mysqli_select_db($dbc, 'databasename'); 

//make a bid for this advertisement 
$query = "INSERT INTO bids (id, ad, bidder, bid, bidwhen, owner, quantity) 
     VALUES (NULL, '$adid', '$userid','$price', now(), '$owner', 1)"; 
$bidData = mysqli_query($dbc, $query); 

$message = $_POST['message']; //message to owner 

if ($message != "") { //if message box is not empty insert comment 
    $title = $ad['title']; 
    $bidid = mysql_insert_id($dbc); //get last id of bid insert and put it into message query for reference 

    $query = "INSERT INTO messages (sentto, sentfrom, sentat, message, title, bid) 
    VALUES ('$owner', '$userid', now(), '$message', '$title', '$bidid')"; 
    $messageData = mysqli_query($dbc, $query); 
} 
?> 

回答

12

Th傳遞給mysql_insert_id的參數是數據庫連接的資源。你正在餵它一個MySQL查詢的結果。只要mysql_insert_id()本身應該工作,除非你打開多個數據庫連接。

http://us3.php.net/mysql_insert_id

1

你是不是檢查mysqli_query的結果,你應該做它喜歡:

if (($bidData = mysqli_query($dbc, $query) !== true) { 
     printf("Error: %s in query %s\n", $mysqli->error,$query); 
} 
5
  1. 什麼pygorex1說。您不希望將查詢結果傳遞給* insert_id()
  2. 爲什麼使用mysql i _query(),但mysql_insert_id()?如果您使用的是mysqli,請使用myqli_insert_id
+0

我的問題是使用mysql_insert_id()而不是mysqli_insert_id($ conn) – 2015-10-24 21:01:12

1

這是有點晚了,但我的PHP手冊中看到,接口都低於:

  1. int mysql_insert_id ([ resource $link_identifier ]);
  2. int mysqli_insert_id (mysqli $link)

所以,我認爲:

  1. 你必須使用mysqli_insert_id($link),如果你是mysqli的風格;
  2. 您應該始終將鏈接標識符傳遞給mysqli_insert_id函數。