#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, что невозможно. Итак, в итоге проблема была вызвана обновленной службой, которая не уведомляла клиентов об изменениях.