Hugo Mills wrote:
> On Wed, Feb 04, 2009 at 12:02:14PM +0000, Brian Chivers wrote:
>   
>> I'm trying to insert the text below into a mysql table but it's complaining, I think it's the ' 
>> that's causing the problem.
>>
>> childrens's/youth program (general)
>>
>> The table is called stream and the field I'm trying to insert into is called genre and it's a 
>> varchar(200) collation utf_general_ci
>>
>> This is the command I'm using
>>
>> mysql_query(INSERT INTO stream (channel, starttime, title, description, genre, filename) VALUES 
>> ('$channel','$starttime','$title','$description','$genre','$filename'));
>>     
>
>    Don't do that. :)
>
>    The problem you're seeing is the least troublesome and least
> damaging of the wide range of evil things that can happen if you write
> code like that.
>
>    If you're using the simple mysql_* functions in PHP, you should
> process *every* parameter passed to SQL through
> mysql_real_escape_string() before putting it into an SQL statement.
> However, this is still prone to breakage (if you forget to do it, for
> example).
>
>   I would strongly recommend installing the MDB2[1] package from
> PEAR[2], plus the MDB2 MySQL "driver" package, and using prepared
> statements[3].
>
>    Hugo.
>
> [1] http://pear.php.net/package/MDB2/docs
> [2] http://pear.php.net/
> [3] http://pear.php.net/manual/en/package.database.mdb2.intro-execute.php
>
>   
Thanks for the pointers, this is what I ended up with
$insert_query = sprintf("INSERT INTO stream (channel, starttime, title, 
description, genre, filename) VALUES ('%s','%s','%s','%s','%s','%s')",
            mysql_real_escape_string($channel),
            mysql_real_escape_string($starttime),
            mysql_real_escape_string($title),
            mysql_real_escape_string($description),
            mysql_real_escape_string($genre),
            mysql_real_escape_string($filename));
I realise it's not perfect but as this will be used internally not using 
a webpage to get the data (it's all pulled from another mysql) database 
I think it should be OK.
Hugo I would install the MDB2 but this is running on a Windows box & I'm 
amazed that php works at all so don't want to add anything & risk 
breaking it :-)
Thanks again
Brian
------------------------------------------------------------------------------------------------
    The views expressed here are my own and not necessarily
 
                the views of Portsmouth College