INSERT INTO не работает в первый раз, а потом работает

    <?php
include "../au.php";

$towhom = $_POST['towhom'];
$content = $_POST['content'];

date_default_timezone_set('Asia/KolKata');
$xyz = date(DATE_RFC2822);

$conn = mysql_connect('localhost', 'local', 'local');
mysql_select_db('chat', $conn);

$q = "INSERT INTO $na (one, two, five, content, ip)
VALUES ('$na', 'sent', '$xyz', '$content', '$ip');";
$w = "INSERT INTO $towhom (one, two, five, content, ip) VALUES ( '$na', 'recieved', '$xyz', '$content', '$ip' );";

if (mysql_query($q)){
echo "<br>&nbsp; Message sent to '".$towhom."'";
} else {
    echo "<br>&nbsp; Failed 1";
}
if (mysql_query($w)){
echo "<br>&nbsp; Message sent to '".$towhom."'";
} else {
    echo "<br>&nbsp; Failed 2";
}
?>

ОПИСАНИЕ: Это скрипт для обмена сообщениями. $towhom и $content берутся из формы. $xyz определен. $na и $ip определены в файле au.php.

ПРОБЛЕМА: $q не работает, а $w работает.


person Ishwar Sarade    schedule 29.12.2014    source источник
comment
Не могли бы вы внести изменения в mysql_query($q) or die(mysql_error()), чтобы опубликовать сообщение об ошибке, которую вы получаете?   -  person Orel Eraki    schedule 29.12.2014
comment
Расширение mysql_connect() устарело, лучше использовать mysqli or PDO   -  person    schedule 29.12.2014
comment
Пожалуйста, не используйте mysql_* функции в новом коде. Они больше не поддерживаются и официально объявлены устаревшими. Узнайте о подготовленных операторах и используйте PDO или MySQL.   -  person Jay Blanchard    schedule 29.12.2014


Ответы (3)


Без какой-либо другой информации я предполагаю, что строка, содержащаяся в $towhom, не относится к действительной таблице. Если я отправляю сообщение «some_user», запрос, хранящийся в $w, будет выглядеть примерно так:

INSERT INTO some_user (...) VALUES (...)

Вы хотите иметь уникальную таблицу для каждого пользователя? И если да, то уверены ли вы, что такие таблицы существуют? Некоторый вывод ошибок был бы очень полезен.

person Sculper    schedule 30.12.2014

Думаю, что многострочные строки вызывают проблемы... Хотя не уверен...

Пытаться,

$q = "INSERT INTO $na (one, two, five, content, ip) " +
     "VALUES ('$na', 'sent', '$xyz', '$content', '$ip')";
person Gokul Nath KP    schedule 29.12.2014
comment
Почему Вы даете такой ответ? В php знак плюса не объединяет строки, верно? - person Indra Kumar S; 29.12.2014
comment
Я полагаю, . (точка). Поправьте, если ошибся. Извиняюсь! Думал с точки зрения Java.! - person Gokul Nath KP; 29.12.2014
comment
Вам нужно узнать, как читаются php-коды. Посмотрите, почему точка и почему нет символа + для конкатенации строк - person Indra Kumar S; 29.12.2014
comment
Ваш ответ не имеет никакого смысла для оп. - person Indra Kumar S; 29.12.2014

Прежде всего, удалите ненужные точки с запятой из ваших запросов.

$q = "INSERT INTO $na (one, two, five, content, ip)
VALUES ('$na', 'sent', '$xyz', '$content', '$ip')";
$w = "INSERT INTO $towhom (one, two, five, content, ip) VALUES ( '$na', 'recieved', '$xyz', '$content', '$ip' )";

затем

ПРОБЛЕМА: $q не работает, а $w работает.

Если запрос не удался, значит, причин может быть много. Вы должны проверить это, используя mysql_query($q) или die(mysql_error())

person Indra Kumar S    schedule 29.12.2014
comment
Голосующие против должны объяснить, почему..? иначе почему вы голосуете против - person Indra Kumar S; 30.12.2014