2017-01-20 3 views
2

Я не понимаю, что здесь происходит. Это мой код:Запрос Mysqli не работает на сервере и локально работает нормально

<?php 
function chestnum(){ 
    $servername = "localhost"; 
    $username = "athletics"; 
    $password = ""; 
    $dbname = "athletics"; 
    // Create connection 
    $conn = mysqli_connect($servername, $username, $password, $dbname); 
    // Check connection 
    if (!$conn) { 
     die("Connection failed: " . mysqli_connect_error()); 
    } 
    //selecting all chest number unallotted students 
    $query = 'SELECT * FROM student WHERE CHEST = 0'; 
    $result = mysqli_query($conn, $query); 
    //selecting all departments' max chest number 
    //$query = 'SELECT MAX(CHEST) FROM student GROUP BY batch'; 
    //$max = mysqli_query($conn, $query); 
    while($row = mysqli_fetch_assoc($result)){ 
    $batch = $row['batch']; 
    $roll = $row['roll']; 
    $q = "SELECT MAX(`CHEST`) FROM `STUDENT` WHERE `batch`='$batch'"; 
    //$q = "SELECT MAX(CHEST) WHERE batch = $batch"; 
    $allmax = mysqli_query($conn, $q); 
    while($rowm = mysqli_fetch_assoc($allmax)) 
    { 
     echo $max=$rowm['MAX(`CHEST`)']; 
    } 
    //echo $cse = $bcr;echo $csa = $bcr;echo $me = $bcr; echo $ece = $bcr;echo $eee = $bcr; 
/* 
    CHEST NUMBER ALLOCATION INFO 
    //100-250mech, 251-400ec, 401-550eee, 551-700cse, 701-850csa 
*/ 
    //Checking for the department and setting chest number 
    if($batch==1 && $max==0){ 
     $q = "UPDATE student SET CHEST = 100 WHERE roll LIKE '$roll'"; 
    } else if($batch==1 && $max == 250) { 
     $q = "UPDATE student SET CHEST = 900 WHERE roll LIKE '$roll'"; 
    } else if($batch==1){ 
     $max++; 
     $q = "UPDATE student SET CHEST = $max WHERE roll LIKE '$roll'"; 
    } 
    if($batch==2 && $max==0){ 
     $q = "UPDATE student SET CHEST = 251 WHERE roll LIKE '$roll'"; 
    } else if($batch==2 && $max == 400) { 
     $q = "UPDATE student SET CHEST = 1000 WHERE roll LIKE '$roll'"; 
    } else if($batch==2) { 
     $max++; 
     $q = "UPDATE student SET CHEST = $max WHERE roll LIKE '$roll'"; 
    } 
    if($batch==3 && $max==0){ 
     $q = "UPDATE student SET CHEST = 401 WHERE roll LIKE '$roll'"; 
    } else if($batch==3 && $max == 550) { 
     $q = "UPDATE student SET CHEST = 1100 WHERE roll LIKE '$roll'"; 
    } else if($batch==3) { 
     $max++; 
     $q = "UPDATE student SET CHEST = $max WHERE roll LIKE '$roll'"; 
    } 
    if($batch==4 && $max==0){ 
     $q = "UPDATE student SET CHEST = 551 WHERE roll LIKE '$roll'"; 
    } else if($batch==4 && $max == 700) { 
     $q = "UPDATE student SET CHEST = 1200 WHERE roll LIKE '$roll'"; 
    } else if($batch==4) { 
     $max++; 
     $q = "UPDATE student SET CHEST = $max WHERE roll LIKE '$roll'"; 
    } 
    if($batch==5 && $max==0){ 
     $q = "UPDATE student SET CHEST = 701 WHERE roll LIKE '$roll'"; 
    } else if($batch==5 && $max == 850) { 
     $q = "UPDATE student SET CHEST = 1300 WHERE roll LIKE '$roll'"; 
    } else if($batch==5) { 
     $max++; 
     $q = "UPDATE student SET CHEST = $max WHERE roll LIKE '$roll'"; 
    } 
    //assigning the chest number 
    mysqli_query($conn, $q); 
    } 
} 
?> 

код прекрасно работает при тестировании в моей локальной машине, но он не показывает ничего, когда выполняется на сервере. При выполнении ошибки нет ошибки. Функция chestnum вызывается из другого файла.

+0

какая ошибка вы получили? – denny

+0

Сделайте некоторые записи. Повторите свой запрос перед его запуском и проверьте наличие ошибок. – aynber

+0

замените все ваши '\' '(обратные ссылки) на одинарные кавычки' '' и посмотрите, работает ли он –

ответ

1

Я столкнулся с этой проблемой раньше. Название таблицы является проблемой здесь. Имя таблицы зависит от регистра.

'SELECT * FROM student WHERE CHEST = 0'; 

"SELECT MAX(`CHEST`) FROM `STUDENT` WHERE `batch`='$batch'"; 

изменить имя таблицы на СТУДЕНТ (и убедиться, что на сервере mysql это то же самое).

1

Это может быть очевидно, но если вы этого не сделали, измените имя вашего сервера. если он работает на localhost, это потому, что ваше имя сервера является localhost. На своем веб-сайте перейдите на панель управления и найдите область mysql, она даст вам имя сервера, которое вы должны использовать, но может быть названо Host Name. Скопируйте это туда, где у вас есть localhost. Также имя базы данных, вероятно, будет отличаться, но оно будет указано на панели управления веб-серверами.

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