2016-08-12 9 views
0

ロード時間がかかるページがありますが、これはSQLリクエストが多すぎるために発生していると思います)。とにかくこれらの3つのクエリを1つに結合することはありますか?PHPコードの代わりに良いSQLクエリを使用する

私がこの質問をしたいのは、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']; 
      } 
     } 

私はこのすべてを1つのクエリに入れようとしていますが、どこにもいません。とにかくこれを行うために1つのクエリだけを使用することはありますか?

ありがとうございます!すでに挿入後に使用可能に挿入IDを持っているよう

+1

1クエリが不可能であるmysqli_insert_id($con);を取得することにより、最後のクエリを置き換えることができます - あなたは、ストアドプロシージャにそれを置くことができます。 – Hogan

+0

私はそれを見ていきますが、それは不可能であると確信していますか?私はSQLのIF文でこれをやろうとしていましたが、成功しませんでした。 –

+0

ifステートメントを使用している場合は、複数のクエリになります。 – Hogan

答えて

0

あなたが

$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?? 
     } 
} 
+0

それは100%働いています - それは私が探していたものではありませんが、それは大きな助けです、ありがとうございます!私はちょうど誰かが1つのクエリでこれを行うことができるかどうかを確認するために数分待つでしょう - もし誰もができないなら、私は答えとしてこれを選択します –

+0

@PedroMartinsNoveesそれは単一のクエリで行うことはできません。 1つに「欠落していれば挿入する」ことができますが、「挿入物から選択する」ことはできません。 – Uueerdo

+0

私は今理解しています。これは正しい答えとして選択されます。君たちありがとう。 –

関連する問題