Почему вставка из php в mysql неправильно обрабатывает вопросительные знаки иногда, но из командной строки никогда? - PullRequest
1 голос
/ 16 декабря 2009

У меня есть простая таблица:

describe chat_public_messageboard ;

    +--------------+---------------+------+-----+---------+----------------+
    | Field        | Type          | Null | Key | Default | Extra          |
    +--------------+---------------+------+-----+---------+----------------+
    | message_id   | int(100)      | NO   | PRI | NULL    | auto_increment |
    | message_from | varchar(255)  | NO   |     | NULL    |                |
    | message_to   | varchar(20)   | NO   |     | NULL    |                |
    | message_body | tinytext      | NO   |     | NULL    |                |
    | message_time | varchar(50)   | NO   |     | NULL    |                |
    | welcome_msg  | enum('0','1') | NO   |     | 0       |                |
    +--------------+---------------+------+-----+---------+----------------+

Когда я делаю вставку из терминала, она работает нормально: Выбрать * 314 | sweety_margs | Даффи | что вы сказали?

INSERT INTO chat_public_messageboard ( message_from , message_body , message_time , message_to , welcome_msg ) VALUES ( 'pdz' , 'what did you say?\n' , '1260948972' , 'pdz2' , 1 ) "

Но когда я посылаю этот точный запрос через функцию mysql db-> query (), знак вопроса превращается в NULL

$query = $querystring = "INSERT INTO chat_public_messageboard ( message_from , message_body , message_time , message_to , welcome_msg ) VALUES ( 'pdz' , 'what did you say?\n' , '1260948972' , 'pdz2' , 1 ) " ;
db->query($querystring);

-

select *
    314 | sweety_margs  | daffy          | what did you sayNULL  

Спасибо.

Ответы [ 3 ]

3 голосов
/ 16 декабря 2009

? обычно используется в качестве заполнителя для параметризованных аргументов в интерфейсе PHP для различных SQL. Таким образом, он, вероятно, думает, что это заполнитель, для которого вы никогда не указывали значение (и, следовательно, NULL).

1 голос
/ 16 декабря 2009

Похоже, вы думаете, что вы пытаетесь добавить параметр в этот запрос. Какое значение вопросительного знака в MySQL в "WHERE column =?"?

1 голос
/ 16 декабря 2009

Какой PHP-фреймворк вы используете? Я подозреваю, что фреймворк использует '?' для привязки параметров в вашем операторе SQL, и поскольку вы не указали параметр, по умолчанию используется значение NULL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...