Я пишу генератор, который позволит вам создавать записи в БД и сохранять их в текстовом файле.
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);
}