У меня есть веб-страница, на которой я ввожу строку и через $ POST она переходит в скрипт PHP, выполняет там выбор SQL и возвращает данные на странице.Для одного запроса выбора работает нормально.Но я пытаюсь также включить другие операторы Select для поиска с другими значениями.
Поэтому, когда я запускаю свой php (с веб-страницы) без переключателя, он всегда работает так, как я ожидаюк.Без ошибок.
<html>
<!-- some style ... -->
<?php
$HOST="10.133.96.132";
// Database user
$DBUSER="tibco";
// Database password
$PASS="suyash123";
// Database name
$DB="VFD2TEST";
// Database Error - User Message
$DB_MSG_ERROR='Could not connect!<br />Please contact the site\'s administrator.';
############## Make the mysql connection ###########
$conn = oci_connect ($DBUSER, $PASS, "//10.133.96.132:7041/VFD2TEST");
if (!$conn) {
$m = oci_error();
echo $m['message'], "\n";
exit;
}
$select123 = $_POST['value'];
$output123 = shell_exec("cat data.lst |grep $select123| awk -F: '{print $2}'");
switch ($output123)
{
case "QUERY1":
$c = "SELECT * FROM EAITUXSERVICES WHERE TUX_ADAPTERS='".$_POST['value']."'";
$result = oci_parse($conn, $c);
oci_execute($result);
break;
case "QUERY2":
$c = "SELECT * FROM EAITUXSERVICES WHERE COMPONENT='".$_POST['value']."'";
$result = oci_parse($conn, $c);
oci_execute($result);
break;
case "QUERY3":
$c = "SELECT * FROM EAITUXSERVICES WHERE TUX_SERVICES='".$_POST['value']."'";
$result = oci_parse($conn, $c);
oci_execute($result);
default:
$c = "SELECT * FROM EAITUXSERVICES WHERE STATION_NAME='".$_POST['value']."'";
$result = oci_parse($conn, $c);
oci_execute($result);
break;
}
echo '<TABLE>';
echo '<thead>';
echo '<tr>
<th>ADAPTERS</th>
<th>SERVICE</th>
<th>CALLING_APP</th>
<th>BP_NAME</th>
<th>STATION_NAME</th>
<th style="padding-right:20px;">COMPONENT</th>
</tr>';
echo '</thead>';
while (($row = oci_fetch_array($result, OCI_BOTH)) != false)
{
echo '
<tr>
<td>'.$row[0].'</td>
<td>'.$row[1].'</td>
<td>'.$row[3].'</td>
<td>'.$row[4].'</td>
<td>'.$row[5].'</td>
<td>'.$row[6].'</td>
</tr>';
}
echo '</TABLE>';
oci_free_statement($result);
oci_close($conn);
?>
</html>
Вывод следующих значений:
$select123 = $_POST['value'];
$output123 = shell_exec("cat data.lst |grep $select123| awk -F: '{print $2}'");
равен QUERY1
, поэтому он должен переключаться
================================= EDIT ====================================
Я только что попробовал с оператором if else, первые запросы все равно не извлекают данные, хотя запрос, указанный в default, работает просто отлично и еготот же запрос.
==================================================================================
================================ EDIT2 =========================================
Теперь я обрезал переменную, поэтому нет проблем с пробелами или специальными символами
<html>
<!-- some style ... -->
<?php
$HOST="10.xxx.xxx.132";
// Database user
$DBUSER="tibco";
// Database password
$PASS="xxxxx";
// Database name
$DB="TEST";
// Database Error - User Message
$DB_MSG_ERROR='Could not connect!<br />Please contact the site\'s administrator.';
############## Make the mysql connection ###########
$conn = oci_connect ($DBUSER, $PASS, "//10.xxxx.96.xx:xxx/xxxx");
if (!$conn) {
$m = oci_error();
echo $m['message'], "\n";
exit;
}
$select123 = $_POST['value'];
$output123 = shell_exec("cat data.lst |grep $select123| awk -F: '{print $2}'");
$output234 = trim($output123);
echo $output234;
if ($output234=="QUERY3")
{
$c = "SELECT * FROM EAITUXSERVICES WHERE COMPONENT='".$_POST['value']."'";
}
else if ($output234=="QUERY1")
{
$c = "SELECT * FROM EAITUXSERVICES WHERE TUX_ADAPTERS='".$_POST['value']."'";
}
$result = oci_parse($conn, $c);
oci_execute($result);
echo '<TABLE>';
echo '<thead>';
echo '<tr>
<th>ADAPTERS</th>
<th>SERVICE</th>
<th>CALLING_APP</th>
<th>BP_NAME</th>
<th>STATION_NAME</th>
<th style="padding-right:20px;">COMPONENT</th>
</tr>';
echo '</thead>';
while (($row = oci_fetch_array($result, OCI_BOTH)) != false)
{
echo '
<tr>
<td>'.$row[0].'</td>
<td>'.$row[1].'</td>
<td>'.$row[3].'</td>
<td>'.$row[4].'</td>
<td>'.$row[5].'</td>
<td>'.$row[6].'</td>
</tr>';
}
echo '</TABLE>';
oci_free_statement($result);
oci_close($conn);
?>
</html>
Теперь мой выходравно QUERY1 и QUERY3 соответственно, но результата нет, раньше работал запрос, который ищет STATION_NAME, теперь работает тот, который ищет COMPONENT, а не имя станции.Действительно странно.