2015-11-21 34 views
2

我只需要獲取數據庫的最新行並回顯該行的ID。我似乎無法得到它的工作。當我嘗試加載php頁面時,我只是收到「內部服務器錯誤」。獲取最新的一行數據庫和回顯ID

<?php 
include ("connection.php"); 
$query = mysql_query('SELECT id FROM timestamp ORDER BY id DESC LIMIT 1'); 
     $result = mysqli_query($link, $query); 
     $row = mysqli_fetch_array($result); 
     echo $row['id']; 
?> 
+0

'mysql_query' AND'mysqli_query'? – FirstOne

+0

哎呀,我明白了。謝謝! – muninn9

回答

5

首先,你使用兩種不同的MySQL的功能與查詢:

$query = mysql_query('SELECT id FROM timestamp ORDER BY id DESC LIMIT 1'); 
     ^^^^^^^^^^^ 
     $result = mysqli_query($link, $query); 
        ^^^^^^^^^^^^ 

,我們不知道是什麼的MySQL API你用來連接。

不同的MySQL API不混合。您需要使用連接中的同一個查詢。

從您的代碼中刪除mysql_query,並且不需要括號。 (成功)mysqli_連接。

同時添加or die(mysqli_error($link))mysqli_query()應該有在查詢中的任何錯誤。

其他參考:

您也可以使用mysqli_insert_id()

返回自動生成的,在過去查詢中使用


腳註ID:

任何詢問timestamp。這不是MySQL「保留」字,而是「關鍵字」。那些是兩個不同的動物。

沒有(R)旁邊TIMESTAMP,而不是說TINYBLOB (R)例如。

因此,蜱不需要纏在他們的表名稱周圍。

+1

如果我沒有遺漏任何東西,還值得一提名爲'timestamp'的表。我知道你可以這樣命名,但你知道...... ^^。 _腳註之後編輯:此評論與視覺功能主題更相關。有這個名字的桌子很「奇怪」。 – FirstOne

+1

@FirstOne在OP使用關鍵字時,我曾被問及過,有人說它需要周圍的滴答聲。所以,我只是再次看着我的水晶球;-)以及未來的訪問者的問題。有人認爲關鍵字需要打勾;不完全正確。一個關鍵字需要勾選一個INSERT。例如。 'INSERT INTO timestamp(col)VALUES('val')'。這就是如果列名和括號之間沒有空格。但在某些系統中,即使使用空間「時間戳(col)」,也會引發錯誤。它可能有點棘手。 –

+1

哎呀。我不能upvote更多xD你的答案。無論如何,我只是覺得值得一提的是,它有時可能會讓人困惑,並且使用一個更具提示性的名字來表達也會很好。但是你知道,也許這對於OP來說足夠暗示了。 – FirstOne

-1

下面的查詢使用,而不是

select * from (SELECT id FROM timestamp ORDER BY id DESC) abc limit 1 
+0

您能否解釋更多 –

+0

Gotcha感謝您的幫助! – muninn9

+0

是的一個解釋將是美好的。 – muninn9

1

你爲什麼要用「mysql」?mysql_函數現在已被棄用。您應該使用「mysqli」或PDOmysqli的支持象 「mysql」 相同的功能

如何利用這一點,你可以得到最後插入從數據庫ID,並使用該ID您使用的mysqli

<?php 
$con=mysqli_connect("localhost","my_user","my_password","my_db"); 
// Check connection 
if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

mysqli_query($con,"INSERT INTO Persons (FirstName,LastName,Age) 
VALUES ('Glenn','Quagmire',33)"); 

// Print auto-generated id 
echo "New record has id: " . **mysqli_insert_id($con)**; 

mysqli_close($con); 
?> 

mysqli_insert_id($ CON)可以得到一排。 但如果你仍然需要使用mysql,那麼你可以使用這個函數mysql_insert_id();你可以得到最後插入的行ID見下文

<?php 
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); 
if (!$link) { 
    die('Could not connect: ' . mysql_error()); 
} 
mysql_select_db('mydb'); 

// it print last inserted id 
printf("Last inserted record has id %d\n", mysql_insert_id()); 
?> 

reffer例如本http://php.net/manual/en/function.mysql-insert-id.php

並使用同樣是取指最後插入的行

+0

mysql_ ...真的嗎? –

+0

是http://php.net/manual/en/function.mysql-insert-id.php –

+0

您是否閱讀過最近鏈接的頁面? http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php –

0

OOP風格 - 大

<?php 
include ("connection.php"); 
$query = new mysqli_query('SELECT id FROM timestamp ORDER BY id DESC LIMIT 1'); 
    $result = new mysqli_query($link, $query); 
    $row = new mysqli_fetch_array($result); 
    echo $row['id']; 
    ?> 
0

嘗試使用此代碼。你必須使用「mysqli_query」而不是「mysql_query」。

<?php 
include ("connection.php"); //contains mysqli_connect information (the $mysqli variable) 

$query = mysqli_query('SELECT id FROM timestamp ORDER BY id DESC LIMIT 1'); 
     $result = mysqli_query($mysqli, $query); 
     $row = mysqli_fetch_array($result); 
     echo $row['id']; 
?> 

謝謝。

相關問題