Re: Probably a novice error about trying to pass null to mysql

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



John Allsopp wrote:

> On 19/05/15 08:47, Marcos Almeida Azevedo wrote:
>
>> On Tue, May 19, 2015 at 3:45 PM, John Allsopp <john@xxxxxxxxxxxxxxxxx>
>> wrote:
>>
>>>      $sql = "INSERT into BOOKING values (null, $pBOOKING_showtimeId,
>>> $pBOOKING_numberOfVehicles, \"$pBOOKING_nameOfPerson\ .... )";
>>>
>>> and when I look at that $sql, it's
>>> INSERT into BOOKING values (null, , 1, "", ...)
>>>
>>> So, it's failing because the function
>>> $myShowtimeController->getShowtimeId() returns NULL, but that's not
>>> reflected in the SQL, so my first question is, do I really have to
>>> write:
>>>
>>>     if ($pBOOKING_showtimeId===null)
>>>      {
>>>        $sql .= "null, ";
>>>      } else
>>>      {
>>>        $sql .= "$pBOOKING_showtimeId, ";
>>>      }
>>>
>>> .. and my second question is that none of the string variables are going
>>> to come out NULL either, they'll end up as blank strings.
>>>
>>> I'm really just trying to avoid having to write the above fix for all
>>> those variables.
>>>
>>> Where am I wrong and why?

It appears that you already understand the problem: NULL has to written
literally, but not as string.  Instead of constructing the query
manually, you should consider using prepared statements if these are
supported by your database library.  When you bind the concrete values
to the prepared statement, the library takes care of the types (maybe
you have to explicitly specify the type).  Prepared statements are
generally recommendable for security reasons, by the way ("SQL Injection").

>> Would you kindly share info about the table? Specially the constraints
> 
> Not sure what you mean about 'constraints' tbh, but here's the table
> structure cut/pasted if that helps:
> 
> 1     BOOKING_id     int(10)         UNSIGNED     No     None
> AUTO_INCREMENT
> 2     BOOKING_showtimeId     int(10)         UNSIGNED     No None
> 3     BOOKING_numberOfVehicles     int(10)         UNSIGNED     No     None
> 4     BOOKING_nameOfPerson     varchar(32)     utf8_unicode_ci     Yes
>     NULL
> 
> it's the SQL that's the problem, no?

It is important that the respective fields allow NULL values (and are
not constrained to NOT NULL), what appears to be the case.

-- 
Christoph M. Becker

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





[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux