$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を示しています。結果に到達する方法を説明してもらえますか?
更新しました:
このようなコンソールモードのスタッフでは、うまく機能します。フィールド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();
これです。