Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Improving if statements in sql query

Tags:

sql

php

I've written some code that works fine, but is extremely verbose and would like a pointer on how to make it more efficient. I'm running different SQL queries because a single one returns too many results;

$sql1 = "select blah blah blah";
$sql2 = "select blah blah blah";
$sql3 = "select blah blah blah";

$response1 = $client->executeSQLQuery(array("sql"=>$sql1));
$response2 = $client->executeSQLQuery(array("sql"=>$sql2));
$response3 = $client->executeSQLQuery(array("sql"=>$sql3));

if( is_array($response1->return->row) )
    {
        foreach($response1->return->row as $numbers)
            {
                echo $numbers->dnorpattern . "<br>";
        $count++;
                }
        }
else
        {
        echo $response1->return->row->dnorpattern . "<br>";
    $count++;
        }

if( is_array($response2->return->row) )
        {
        foreach($response2->return->row as $numbers)
                {
                echo $numbers->dnorpattern . "<br>";
                $count++;
                }
        }
else
        {
        echo $response2->return->row->dnorpattern . "<br>";
        $count++;
        }

if( is_array($response3->return->row) )
        {
        foreach($response3->return->row as $numbers)
                {
                echo $numbers->dnorpattern . "<br>";
                $count++;
                }
        }
else
        {
        echo $response3->return->row->dnorpattern . "<br>";
        $count++;
        }

So, I would like to change the if statements to be a single if statement like this;

if( is_array($response1->return->row) )
    {
        foreach($response1->return->row as $numbers)
            {
                echo $numbers->dnorpattern . "<br>";
        $count++;
                }
        }
else
        {
        echo $response1->return->row->dnorpattern . "<br>";
    $count++;
        }

The integer for $sql and $response is predictable, so I should be able to use a for statement

for($x=1, $x<=3, $x++)
    {
    if( is_array($response[$x]->return->row) )
            {
            foreach($response[$x]->return->row as $numbers)
                    {
                    echo $numbers->dnorpattern . "<br>";
                $count++;
                    }
            }
            else
                {
                echo $response[$x]->return->row->dnorpattern . "<br>";
                $count++;
                }
    }

But this does not work, can someone explain how I can increment the integer properly?

like image 372
Kimomaru Avatar asked Jan 26 '26 00:01

Kimomaru


1 Answers

You can use curly braces syntax:

for($x=1; $x<=3; $x++)
{
    if( is_array(${'response' .$x}->return->row) )
    {
        foreach(${'response' .$x}->return->row as $numbers)
        {
            echo $numbers->dnorpattern . "<br>";
            $count++;
        }
    }
    else
    {
        echo ${'response' .$x}->return->row->dnorpattern . "<br>";
        $count++;
    }
}

OR save your three response objects in an array, and use your original syntax:

$response = [];
$response[1] = $client->executeSQLQuery(array("sql"=>$sql1));
$response[2] = $client->executeSQLQuery(array("sql"=>$sql2));
$response[3] = $client->executeSQLQuery(array("sql"=>$sql3));

Though you could probably just write a better SQL query and vastly simplify things

like image 167
Steve Avatar answered Jan 28 '26 16:01

Steve



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!