У меня есть файл SQL в Unix, который я получаю с помощью PHP, вырезая его с начала и с конца и возвращая его в textarea
с помощью AJAX. Файл:
Set LINESIZE 1000
set timing on
set FEEDBACK off
SET PAGESIZE 50000
set COLSEP |
set trim on
set RECSEPCHAR ~
select * from tbvalid_value where discrete_code like '% %' and DISCRETE_CODE != 'U - Unreturned and billed'
;
exit;
после exit;
у меня есть еще одна пустая строка.
Я хочу вернуть только оператор select:
select * from tbvalid_value where discrete_code like '% %' and DISCRETE_CODE != 'U - Unreturned and billed'
Для этого сначала я вырезаю первые 8 рядов с помощью этой функции:
function str_chop_lines($str, $lines = 8) {
return implode("\n", array_slice(explode("\n", $str), $lines));
};
$sql = str_chop_lines($sqlString);
Это сокращает все операторы Set
и пустую 8-ю строку.
Затем я хочу избавиться от последней части строки (от ;
до exit;
). Для этого я использую это:
$finalSql = substr($sql, 0, strpos($sql, ';'));
Но когда я возвращаю строку на сторону клиента textarea
, я получаю в конце 4 пустые пустые строки, как видно на этом рисунке (красные строки были добавлены мной для иллюстрации 4 пустых строк):
Я пытался обрезать эти строки разными способами:
$sqlReturnByAjax = substr($finalSql, 0, strrpos($finalSql, "\n"));
$sqlReturnByAjax = str_replace('/n/n', '/n', $finalSql);
$sqlReturnByAjax = rtrim($finalSql);
Но ничего из этого не сработало.
Что я упустил?
var_dump($finalSql);
? - person Amal Murali   schedule 19.11.2013string(110) "select * from tbvalid_value where discrete_code like '% %' and DISCRETE_CODE != 'U - Unreturned and billed' "
- person Alon Adler   schedule 19.11.2013textarea
пуст до того, как AJAX вернет строку, так почему я вижу 4 новые строки после ? - person Alon Adler   schedule 19.11.2013textarea
, я не понимаю, откуда берутся эти строки? - person Alon Adler   schedule 19.11.2013replace(/^\s+|\s+$/g,'')
. Но я до сих пор не понимаю, почему он с самого начала возвращается с пустыми строками... - person Alon Adler   schedule 19.11.2013