Ben, 

heredocs seem to do just what you are asking. 

http://www.onlamp.com/pub/a/php/2003/04/10/php_heredocs.html

If I can "include()" a file inside this construct, then it will 
solve my problem too :-?

Monu

-----Original Message-----
From: Monu Ogbe 
Sent: 12 June 2003 14:12
To: [EMAIL PROTECTED]
Subject: RE: [PHP] Re: Vars inside an sql query [Regular expression
question]


Hi, 

I'll join the conversation, because I have a similar problem.  

PHP "interpolates" variable values in strings if these are enclosed in 
double quotes:

e.g., 

  $string = "select * FROM `table` where id='$value' order by name";

PHP does not interpolate variables contained in strings delimited by 
single quotes.  That much is clear.

What seems to happen in Ben's case is that strings retrieved from the 
database are treated as if they are delimited by single quotes.

I have the same trouble in the case of strings retrieved from a file.

I have not been able to find a function that FORCES the variables 
within a single-quoted string to be translated.

I am currently looking into "heredocs" because the heredoc construct, 
like double-quoted strings, does perform interpolation.

I'll report back if this works, but would love to hear if there is a
simpler solution.

Thanks, 

Monu

>Sorry this is more correct :
>
>------ starting query.php
>select * FROM `table` where id='$value' order by name
>------ ending query.php
>
>"Hatem Ben" <[EMAIL PROTECTED]> a écrit dans le message de news:
>[EMAIL PROTECTED]
>> Oh, ok this is how i want to do it exactly :
>> ------------ query.php
>> <?php
>> $query = "select * FROM `table` where id='$value' order by name";
>> ?>
>>
>> ------------ parse.php
>> <?php
>> $fcontents = join('' , file('query.php'));
>> preg_match_all("/^('\$(.*)')/si", $fcontents,$matches);
>> print_r($matches)
>> ?>
>>
>> Thanks
>>
>> "Chris Hayes" <[EMAIL PROTECTED]> a écrit dans le message de news:
>> [EMAIL PROTECTED]
>> > At 13:54 12-6-03, you wrote:
>> > >>I got a headache doing this, i need to get vars inside an sql
query.
>For
>> > >>example :
>> > >>
>> > >>$query = "select * FROM `table` where id='$value' order by name";
>> > >>preg_match_all("/^('\$(.*)')/si", $query,$matches);
>> >
>> >
>> > >That doesn't work as the new string already is like "select * FROM
>> `table`
>> > >where id='2' order by name" assuming $value was 2...
>> >
>> > True, so try using
>> >
>> > $query = "select * FROM `table` where id='__VALUE__' order by
name";
>> >
>> > if you insist on doing it this way.
>> >
>> > If you decide to keep trying with the $value, you need to know that
>> > variables inside "double quotes" are entered on the spot, while not
so
>> with
>> > 'single quotes'.
>> >
>> >
>> > Also it is nice to know that the $ has a special position in
>> preg_matching,
>> > i kept this mail from a post from december in this list:
>> >
>> >  > such as $, you must escape it twice. For example:
>> >  >
>> >  > $matchme = "\$example";
>> >  > if (preg_match("/\$example/", $matchme)) {
>> >  >
>> >  > will not be matched because PHP interprets the \$ and passes it
as $.
>> >  > Instead, you must do this:
>> >  >
>> >  > if (preg_match("/\\\$example/", $matchme)) {
>> >
>>
>>

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to