2012-06-10 13 views
1
$mysqli = new mysqli("localhost","root","","mydatabase"); 

if ($result = $mysqli->prepare("SELECT MAX(`id`) AS `id` FROM `mytable` WHERE `row1`=? OR `row2`=?")) 
{ 

    $id = 2; 
    $result->bind_param("ii",$id,$id); 
    $result->execute(); 
    $result->bind_result($max); 
    $result->close(); 

    var_dump($max); 

} 

$mysqli->close(); 

不幸的是,這段代碼總是顯示NULL,你能告訴我如何達到結果嗎?MySQLi查詢在表中獲取最大ID?

更新:在控制檯

模式的工作人員這樣的偉大工程。字段id是int和增量(作爲PRIMARY INDEX),其他字段它只是一個具有不同int值的行,我不能改變任何東西。

更新:

嗯,看來我找到了解決辦法:

$mysqli = new mysqli("localhost","root","","mydatabase"); 

if ($result = $mysqli->prepare("SELECT MAX(`id`) AS `id` FROM `mytable` WHERE `row1`=? OR `row2`=?")) 
{ 

    $id = 2; 
    $result->bind_param("ii",$id,$id); 
    $result->execute(); 
    $obj = $result->get_result()->fetch_object(); 
    $max = $obj->id; 
    $result->close(); 

    var_dump($max); 

} 

$mysqli->close(); 

這是它。

+0

如果單純從控制檯執行它,你得到的結果? 'SELECT MAX(id)AS id FROM mytable WHERE row1 = 2 OR row2 = 2' –

+0

如果您希望列自動增長,爲什麼不將該列創建爲標識列? –

+0

打我吧!做得好。 –

回答

1

我想通了這種方式:

$result = mysqli_query($con, "SELECT * FROM `TableName` ORDER BY `PID` DESC LIMIT 1"); 
$row = mysqli_fetch_array($result); 
$pidmax=$row['PID'];