gpt4 book ai didi

php - 使用良好的 SQL 查询而不是 PHP 代码

转载 作者:行者123 更新时间:2023-11-29 20:33:18 25 4
gpt4 key购买 nike

我有一个页面需要很长时间才能加载,我几乎可以肯定这是由太多的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com