2016-07-29 2 views
0

Я пытаюсь извлечь данные из базы данных MYSQL с помощью оператора, но по некоторым причинам оператор работает не так, как ожидалось. Что может быть причиной? Значения представляют собой входы даты из формы t1 и t2. Значения даты в форме 2005-04-06. Это может быть вопрос с датой? ... Я получаю «Нет контактов для отображения», несмотря на наличие данных в базе данных. Это синтаксическая ошибка?Оператор MYSQL SELECT для выбора периода даты

<?php 
session_start(); 

$servername = "localhost"; 
$username = "root"; 
$password = "ub435!"; 
$dbname = "funtest"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 
$_SESSION['post-data'] = $_POST; 

$t1 = $_SESSION['post-data']['t1']; 
$t2 = $_SESSION['post-data']['t2']; 
$time1 = mysqli_real_escape_string($conn, $t1); 
$time2 = mysqli_real_escape_string($conn, $t2); 


$sql = "SELECT DISTINCT msisdn FROM customer WHERE DATE_FORMAT(time_paid, '%Y-%c-%e') BETWEEN ADDDATE('$time1',INTERVAL 0 HOUR) AND ADDDATE('$time2',INTERVAL '23:59' HOUR_MINUTE)"; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
    echo "Number of Recipients: "; echo "$result->num_rows <br> <br>"; 
    // output data of each row 
    while($row = $result->fetch_assoc()) { 
$mobilenumber = $row['msisdn']; 
     echo "Mobile : " . "$mobilenumber" . "<br>"; 

    } 
} else { 
    echo "No Contacts to Display"; 
} 

$conn->close(); 
?> 
+0

ли вам нужно общее решение сервера MySQL + SQL? Почему он помечен SQL Server? –

+0

Если ваша проблема не устранена, это может быть причиной формата даты, пожалуйста, проверьте формат даты в таблице базы данных и сравните с $ time1 и $ time2 – Rohit

+0

'echo' your' $ sql' после подготовки запроса и попробуйте выполнить phpmyadmin напрямую, вы получите лучшее представление об этой проблеме. Или просто вставьте запрос здесь – Sanchit

ответ

1

Вы пропустили $:

$sql = "SELECT DISTINCT msisdn FROM customer where time_paid BETWEEN '$time1' AND '$time2')"; 
+0

Избегайте одинарных кавычек '$ time' – jitendrapurohit

+0

@jitendrapurohit Одиночные кавычки должны быть необходимы в этом запросе. – Rohit

Смежные вопросы