Как сохранить в файл запрос PHP Oracle - PullRequest
0 голосов
/ 24 марта 2020

Я пишу генератор, который позволит вам создавать записи в БД и сохранять их в текстовом файле.

Php + Oracle 12 c

Вставить в is работает нормально, потому что я разделил INSERT и сохранил в файл.

Я сделал:

  • Загрузка ввода от пользователя, сколько записей вы хотите добавить (INSERT)

  • используя select, я загружаю последний идентификатор

  • В l oop добавить эти запросы (идентификатор, строка, сгенерированная функцией) в db

  • сохранить в файл добавленные запросы

Моя проблема в том, что когда я сохраняю это в файл (идентификатор из таблицы), дублируется и генерируется случайная строка либо.

Мой код:

function generateRandomString($length = 10) {
    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $charactersLength = strlen($characters);
    $randomString = '';
    for ($i = 0; $i < $length; $i++) {
        $randomString .= $characters[rand(0, $charactersLength - 1)];
    }
    return $randomString;
}

$randomString = generateRandomString();

$ile_razy = $_POST['how_many'];

$execute = "INSERT INTO DODATEK SELECT NVL(MAX(dodatekid),0)+1,'$randomString' from DODATEK";

$c = oci_connect($username, $password, $database);
if (!$c) {
    $m = oci_error();
    trigger_error('Could not connect to database: '. $m['message'], E_USER_ERROR);
}


$zapytanie = "SELECT NVL (MAX(dodatekid),0) from DODATEK";
$stmt = oci_parse($c, $zapytanie);
$results = oci_execute($stmt);
 while($row = oci_fetch_assoc($stmt)){
    foreach ($row as $item) {
        $rowid = $item = $row["NVL(MAX(DODATEKID),0)"];
    }
}


$stid = oci_parse($c,$dodatek);
if (!$stid) {
    $e = oci_error($c);
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

// Perform the logic of the query
$r = oci_execute($stid);
if (!$r) {
    $e = oci_error($stid);
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}


$ex = oci_parse($c,$execute);

$dodatekIdForTxt = "INSERT INTO DODATEK VALUES(".$rowid.",".$randomString.")";
    $file = 'pliczek.txt';
    $current = file_get_contents($file);

for ($i = 1; $i <= $how_many; $i++) {
    oci_execute($ex);
    $current .= $i. ".".$dodatekIdForTxt."\n";

    file_put_contents($file, $current);
}
...