2015-04-23 2 views
0

У меня есть две таблицы MySQL - «mfb_servicelog» и «mfb_agent_status_summary».Ошибка при извлечении данных из таблицы с использованием значений из двух разных таблиц - MySQL

Я хочу выбрать данные из столбца «total_ce» в «mfb_agent_status_summary», где sl_id = $ sl_id, а затем экспортировать его как лист Excel с использованием PHPExcel.

Я могу получить значение $ sl_id из таблицы mfb_servicelog, где h_id = $ value [$ i].

И значения $ value поступают из другого php-файла с использованием _POST в виде массива.

Пожалуйста, направьте меня вправо.

Вот мой код: (Его возвращение длинного списка ошибок)

$value = $_POST['hospitalname']; 
$from = $_POST['from']; 
$to = $_POST['to']; 
if($_POST["Submit"]=="Submit") { 
for ($i=0; $i<sizeof($value); $i++) { 
$queryslid="SELECT sl_id FROM mfb_servicelog WHERE h_id LIKE ('".$value[$i]."')"; 
if ($resultslid = (mysql_query($queryslid) or die(mysql_error())) { 
       while($rowslid = mysql_fetch_row($resultid)) { 
        $slidset[$i] = $rowslid; 
       } 
       $querycasesentered = "SELECT total_ce FROM agent_summary WHERE sl_id LIKE ('".$slidset[$i]."')"; 
       if ($resultcaseentered = (mysql_query($querycasesentered) or die(mysql_error())) { 
        while($rowce = mysql_fetch_row($resultcasesentered)) { 
         $casee[$i] = $rowce; 
         if($i == 0) { 
          $col = 'H'; 
         } 
         else { 
          $col = $k; 
         } 
         foreach ($rowce as $cell) { 
          $obejctPHPExcel->getActiveSheet()->setCellValue($col.$rowNumber,$cell); 
          $col++; 
         } 
         $rowNumber++; 
        } 
       } 
      } 
+0

В чем проблема, с которой вы столкнулись, в точности? –

+0

проблема заключается либо в том, что она не возвращает результат, а не имеет ошибки или иногда имеет значение null, тогда как существуют значения. – PeeJay

+0

Вы использовали 'JOIN' в SQL раньше? Вы можете очень легко использовать один запрос для возврата данных из более чем одной таблицы с этим. –

ответ

1

Просто голова, вы принимаете данные POST, не чистив его перед запуском своего оператора SQL, это очень опасно и открывает базу данных для достижения впрыска. Но к проблеме. Используйте SQL-инструкцию для соединения примерно так:

$sql = "SELECT total_ce FROM agent_summary AS agent LEFT JOIN mfb_servicelog AS service ON agent.sl_id = service.sl_id WHERE service.h_id LIKE ('".$value[$i]."')" 
+0

вы пропустили «как» между agent_summary и агентом? – PeeJay

+1

@mbeintema Нет, нет необходимости использовать AS для псевдонима таблицы, только для столбца. –

+0

OKay ... отлично .. Я сообщу вам результат ... спасибо за редактирование. – PeeJay

1

Вы используете mysql_query в неправильном направлении. mysql_query имеет 2 параметра, который является соединение и запрос

Вы можете посмотреть на этом определении: http://www.w3schools.com/php/func_mysqli_query.asp

Короче говоря, я полагаю, что вы должны использовать PDO, когда вы не уверены в том, что вы делаете с MySQL , Чтобы понять, что такое PDO, вы должны внимательно прочитать этот урок http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers, который поможет вам предотвратить ваш код из SQL Injection.

+0

Спасибо. Я считаю, что эти учебные пособия помогут мне хорошо понять функции. – PeeJay

+0

Последний абзац в этом ответе хорош, рекомендуя использовать PDO. Первый параграф, похоже, запутывает функции интерфейса 'mysql_' (которые устарели), с более новыми функциями интерфейса' mysqli_'. Я не могу согласиться с рекомендацией веб-сайта w3fools. Это смешанная сумка. Да, есть много полезной информации. Проблема в том, что хорошие вещи смешаны с ошибками и искажениями. Ошибки на самом деле не проблема, реальной проблемой является полный отказ w3fools исправлять отмеченные ошибки и их неспособность даже отвечать на предложения. – spencer7593

+0

@ spencer7593 большое спасибо. Я ссылаюсь на w3schools в то время, потому что я не могу получить доступ к веб-сайту php.net, и я не знаю почему. Возможно, это связано с моим подключением к Интернету. –