запрос php mysql выполняется некорректно

#php #mysql #insert

#php #mysql #вставить

Вопрос:

У меня странная проблема с моим sql-скриптом.

У меня есть строка

 $query = "INSERT into sms_replyid (eventid, bus_id, cell_num, sms_message) 
          VALUES ('93361357', '2162', '27761144734', 'Hoekom');";
  

Но когда я выполняю эту строку, она вставляет ее в таблицу, но eventid остается 0, если я выполняю эту точную команду в cmd, она работает отлично?

Есть идеи, почему это не вставляет все значения?

Редактировать полный код

 <?php session_start();

$link = mysql_connect("localhost", "username", "password"); //removed u and p for posting

if (!$link)

    die("Couldn't connect to MySQL");

mysql_select_db("db", $link) //removed db name for posting

or die ("Couldn't open smss:" . mysql_error());
$id = $_SESSION['id'];

$message = $_REQUEST['promo_message'];
$timeToSend = $_REQUEST['timeToSend'];
$dateToSend = $_REQUEST['dateToSend'];





    if(isset($_REQUEST['input_cell']))
    {
        $receiver = $_REQUEST['input_cell'];
        if($receiver != '')
        {
            $response_string = sendSMSPortalSchedule($message, $receiver, $sender_id, $dateToSend, $timeToSend);
            $response_string = str_replace ( "True" , "", $response_string );
//This does not work right, all gets added perfectly yet eventid stays 0 enven while all the others get the right values
        $query1 = "INSERT into sms_replyid (eventid, bus_id, cell_num, sms_message) VALUES ('$response_string', '$id', '$receiver', '$message');";

        mysql_query($query1);
        echo mysql_error();
        }
    }
    if(isset($_REQUEST['single_cell']))
    {
        $receiver = $_REQUEST['single_cell'];
        if($receiver != 'none')
        {
        $response_string = sendSMSPortalSchedule($message, $receiver, $sender_id, $dateToSend, $timeToSend);
        $response_string = str_replace ( "True" , "", $response_string );
        $query2 = "INSERT into sms_replyid (eventid, bus_id, cell_num, sms_message) VALUES ('$response_string', '$id', '$receiver', '$message');";
//This does not work right, all gets added perfectly yet eventid stays 0 enven while all the others get the right values
        mysql_query($query2);
        echo mysql_error();

        }

    }

    if(isset($_REQUEST['sento_group']))
    {
            $array = $_REQUEST['sento_group'];
        foreach($array as $receiver)
        {
            if($receiver != 'none')
            {
                $query = 'SELECT cell_number FROM cell_groups WHERE group_id ="'.$receiver.'"';
                $result2 = mysql_query($query) or die('Fail');

                while($row=mysql_fetch_array($result2))
                {
                $response_string = sendSMSPortalSchedule($message, $row['cell_number'], $sender_id, $dateToSend, $timeToSend);
                $response_string = str_replace ( "True" , "", $response_string );
                $to = $row['cell_number'];
                $query3 = "INSERT into sms_replyid (eventid, bus_id, cell_num, sms_message) VALUES ('$response_string', '$id', '$to', '$message');";
//This does not work right, all gets added perfectly yet eventid stays 0 enven while all the others get the right values
                        mysql_query($query3);
                echo mysql_error();
            }
            }
        }
    }
}
  

Это таблица

 id = INT
eventid = BIGINT(20)
bus_id = INT
cell_num = VARCHAR
sms_message = VARCHAR
  

Комментарии:

1. Пожалуйста, опубликуйте код, который вы используете для выполнения запроса, и полное определение таблицы.

2. Должна ли быть точка с запятой в строке SQL? Из того, что я знаю, MySQL не обязательно должен заканчиваться точкой с запятой.

3. @Seralize Это не имеет никакого значения

4.@Serialize: вы правы, точки с запятой там быть не должно. Однако из руководства по PHP The query string should not end with a semicolon. я думаю, что MySQL просто игнорирует его, поэтому я не думаю, что это может объяснить ошибку.

5. Поэтому создайте скрипт из «простой команды, которая работает», в «скрипт, который у вас есть, который не работает». Проверка после каждого логического блока. Где-то он перестанет работать.

Ответ №1:

Сама команда SQL верна. Проблема должна быть в другом месте.

Во-первых, вы уверены, что значения ваших параметров верны? Попробуйте вывести запрос после интерполяции переменных, чтобы убедиться, что он правильный:

 $query1 = "INSERT into sms_replyid (eventid, bus_id, cell_num, sms_message) VALUES ('$response_string', '$id', '$receiver', '$message')";
echo $query1;
  

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

Ответ №2:

Я обнаружил проблему, служба, которую я использовал, была изменена, чтобы возвращать XML, где он обычно просто возвращал целое число, это заставило меня попытаться вставить XML в мое поле BIGINT, что невозможно. Итак, в итоге проблема была вызвана обновленной службой, которая не уведомляла клиентов об изменениях.