Re: Re: Database Problems

tamouse mailing lists <[email protected]>
Newsgroups gmane.comp.php.database
Message-ID <CAHUC_t_i5C8+YxjEWYZyNpDfs-FyVxW_+an6TF2moBmQtXWLPA@mail.gmail.com>
On Sun, Jun 17, 2012 at 8:22 PM, tamouse mailing lists
<[email protected]> wrote:
> On Sun, Jun 17, 2012 at 5:55 PM, Ethan Rosenberg <[email protected]> wrote:
>> At 04:21 PM 6/17/2012, Jim Giner wrote:
>>
>>> "Ethan Rosenberg" <[email protected]> wrote in message
>>> news:[email protected]...
>>> > At 03:30 PM 6/17/2012, Jim Giner wrote:
>>> >>"Ethan Rosenberg" <[email protected]> wrote in message
>>> >>news:[email protected]...
>>> >> > Dear List -
>>> >> >
>>> >>
>>> >> >
>>> >> > The same query in a PHP program will only give me results for MedRec
>>> >> > 10003
>>> >> >
>>> >>
>>> >>why the "where 1" clause?  Do you know what that is for?
>>> > =================
>>> > Dear Jim
>>> >
>>> > Thanks
>>> >
>>> > As I understand, to enable me to concatenate phases to construct a
>>> > query.
>>> >
>>> > The query does work in MySQL fro the terminal.
>>> >
>>> > Ethan
>>> >
>>>
>>> I don't think so.  All it does is return one record.  The where clause
>>> defines what you want returned.  A '1' returns one record, the first one.
>>> #10003
>>>
>>> I wonder why you think "where 1" enables concatenation??  A query (IN
>>> SIMPLE
>>> TERMS PEOPLE) is simply a SELECT ion of fields from a group of tables,with
>>> a
>>> WHERE clause to define the criteria to limit the rows, and an ORDER BY to
>>> sort the result set.  More complex queries can include GROUP BY when you
>>> are
>>> including summary operators such as SUM(fldname) or MAX(fldname), or a
>>> JOIN
>>> clause, or a host of other clauses that make sql so powerful.  In your
>>> case
>>> I think you copied a sample query that (they always seem to be displayed
>>> with a 'where 1' clause) and left the "1" on it.  To summarzie:
>>>
>>> SELECT a.fld1, a.fld2,b.fld1 from table1 as a, table2 as b WHERE a.key
>>> >100
>>> and a.key = b.key ORDER BY a.fld1
>>>
>>> I"m no expert, but hopefully this makes it a little less complex for you.
>>
>> ================
>>
>> This is a suggestion I received from this list -
>> +++++++++++++++++++++
>>>>
>>>> $query = "select * from Intake3 where ";
>>>
>>>
>>> Maybe I missed it, but you need to have a 1 after the where part in your
>>> select.  So...
>>>
>>> $query = "SELECT * FROM Intake3 WHERE 1 ";
>>
>> ++++++++++++++++++++++++++++
>>
>> I must stress that the query works from the terminal, and fails in the PHP
>> code.
>>
>> My question is why?????
>>
>> Ethan
>
> First off, all "where 1" does is make the statement always true. If
> you don't believe that, try this query:
>
> SELECT * FROM Intake3 WHERE 1;
>
> in mysql and contrast with:
>
> SELECT * FROM Intake3;
>
> you should see identical results.
>
> Secondly, you need to look at where you are gathering the return from
> the query. You show:
>
> $result = mysqli_query($cxn,$query);
>
> but you aren't showing us what you do with $result, as in where you
> fetch the rows and process them. I'm dubious that the query is in fact
> only returning one record. But you can check by echoing
> mysqli_num_rows($result). (I think; I never use the procedural
> version, opting to use the object version instead.)

Just to clarify, what Ethan has is not incorrect: the way he's
constructing the where clause requires at least one expression before
the $allowed_fields gets tacked on:

> $query .= " AND ($key  = '$val') ";

Since if even one of those gets appended, there must be an expression
before the first "AND". The 1 merely evaluates to true here, creating
a valid where clause.

-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.