我之前曾做过这个问题,但是我有新的数据让我理解。 我需要知道如何获取用于Web服务的php中数组的最后记录吗?我需要获取它,将其添加1,然后创建一个新的寄存器(另一条记录中的数字为+1
id turnoActual
106 7
获取最后一个数字,添加1,然后添加添加了数字的另一条记录(自动,在AndroidStudio中不添加新参数),然后得到结果。因此,我得到7,加1,放入SQL,然后将8作为结果变量。
id turnoActual
106 7
107 8
圣地亚哥,请帮忙。
php中的代码是这样的,我卡住了,我不知道在哪里看到。
ultimoTurno = LastTurn nuevoTurno = newTurn
<?PHP
$hostname_localhost ="xxxxxxx";
$database_localhost ="xxxxx";
$username_localhost ="xxxxx";
$password_localhost ="xxxxx";
$json=array();
$conexion = mysqli_connect($hostname_localhost,$username_localhost,$password_localhost,$database_localhost);
$ultimoTurno="select MAX(turnoActual) from tn";
$resultado=mysqli_query($conexion,$ultimoTurno);
if($registro=mysqli_fetch_array($resultado)){
$nuevoTurno=$registro['turnoActual']+1;
$atendido=false;
$nuevoTurno_query="INSERT INTO tn(turnoAcutal, atendido) VALUES ('{$nuevoTurno}','{$atendido}')";
$resultado2=mysqli_query($conexion,$nuevoTurno_query);
if($resultado2){
$confirmacion="SELECT turnoActual FROM tn WHERE turnoActual = '{$nuevoTurno}'";
$resultado3=mysqli_query($conexion,$confirmacion);
if($registro=mysqli_fetch_array($resultado3)){
$json['usuario'][]=$registro;
}
else{
$result["turnoactual"]='no registra de resultado 3';
$json['usuario'][]=$resultar;
}
}
else{
$resulta["turnoAcutal"]='No Registra de resultado 2';
$json['usuario'][]=$resulta;
}
mysqli_close($conexion);
echo json_encode($json);
}else{
$resulta["turnoAcutal"]='No Registra de resultado';
$json['usuario'][]=$resulta;
echo json_encode($json);
}
?>
答案 0 :(得分:0)
您可以使用end()获得最后一个项目。
$arr = json_decode($json, true);
$last = end($arr);
$arr[] = $last+1;
答案 1 :(得分:0)
我刚刚在phpMyAdmin中对此进行了反复测试:
INSERT INTO tn (turnoActual) SELECT IFNULL(MAX(turnoActual) + 1, 1) FROM tn
无论表中是否有任何行,此操作都不会出错。没有行时,将应用默认值1
。
为了避免出现竞争状况,建议在执行此查询之前锁定表。
如果您需要从新添加的行中获取数据,请使用php的insert_id。
此答案假设您对表中的列数(2)保持真实,并且id
列为PRIMARY和AUTOINCREMENT。
嗯,您的编码尝试引用了atendido
,但是您将无法保存false
,尽管您可以保存null
。如果您将该列设置为可空并且不在INSERT中引用它,则它将默认为NULL
,这对您的项目来说应该是明智的。
我还想指出,mysqli_fetch_array
返回一个带有索引元素和关联元素的数组。如果只想在输出中存储关联键,则使用mysqli_fetch_assoc()
。
这里有一些示例代码可以帮助您入门(我在本地测试了此代码是否成功;未实现表锁定):
if (!$conexion = new mysqli("localhost", "root", "", "dbname")) { // declare and check for a falsey value
echo "Connection Failure"; // $conexion->connect_error <-- never show actual error details to public
} elseif (!$conexion->query("INSERT INTO tn (turnoActual) SELECT IFNULL(MAX(turnoActual) + 1, 1) FROM tn
")) { // execute and check for a falsey return value
echo "Insert Failure - Syntax Error"; // $conexion->error <-- never show query or actual error details to public
} elseif (!$result = $conexion->query("SELECT * FROM tn WHERE id = " . $conexion->insert_id)) {
echo "Select Failure - Syntax Error"; // $conexion->error <-- never show query or actual error details to public
} else {
echo "<pre>";
var_export($result->fetch_row());
echo "</pre>";
}