我有一个页面需要很长时间才能加载,我几乎可以肯定这是由太多的 sql 请求引起的(又名是由我糟糕的 SQL 技能引起的)。有没有办法将这 3 个查询合并为一个?
我想要对这个查询做的是尝试从cardapios中选择一个特定的id,如果那里有任何东西(如果$num_rows> 0)我唯一想做的就是选择该id。如果那里什么都没有,那么我想插入一些东西,然后选择它的 id。
$query = "SELECT id FROM cardapios WHERE nome='$nome'";
$sql = mysqli_query($con,$query);
$num_rows = mysqli_num_rows($sql);
if ($num_rows > 0){
while ($row = mysqli_fetch_array($sql)){
$_SESSION['id_cardapio'] = $row['id'];
$num_rows = 0;
}}else{
$query = "INSERT INTO cardapios (nome, kcal, semana)
VALUES('$nome', '$kcal', '$semana')" or die(mysqli_error($con));
$sql = mysqli_query($con,$query);
$query = "SELECT id FROM cardapios WHERE nome='$nome' ";
$sql = mysqli_query($con, $query);
while ($row = mysqli_fetch_array($sql)){
$_SESSION['id_cardapio'] = $row['id'];
}
}
我试图将所有这些放入一个查询中,但一无所获。无论如何,有没有只使用一个查询来完成所有这些操作?
提前致谢!
最佳答案
您可以通过获取 mysqli_insert_id($con);
来替换最后一个查询,因为插入后您已经有了可用的插入 ID
$query = "SELECT id FROM cardapios WHERE nome='$nome'";
$sql = mysqli_query($con,$query);
$num_rows = mysqli_num_rows($sql);
if ($num_rows > 0){
while ($row = mysqli_fetch_array($sql)){
$_SESSION['id_cardapio'] = $row['id'];
$num_rows = 0;
}
}else{
$query = "INSERT INTO cardapios (nome, kcal, semana)
VALUES('$nome', '$kcal', '$semana')" or die(mysqli_error($con));
$sql = mysqli_query($con,$query);
if ( $sql !== false) { // did insert work
$_SESSION['id_cardapio'] = mysqli_insert_id($con);
} else {
// insert did nto work??
}
}
关于php - 使用良好的 SQL 查询而不是 PHP 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38923250/