Итак, я получил свой «маленький» код здесь:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
//Verbindung
$connection = mysqli_connect('localhost', 'user', 'pw', 'db');
// search stuff
// Treuhandbetrag case 1
$suchstringanfang_treuhand1 = 'treuhand_betrag\"';
$suchstringende_treuhand1 = '\";';
// Treuhandbetrag case 2
$suchstringanfang_treuhand2 = 'treuhand_price\"';
$suchstringende_treuhand2 = '\";';
//queries
//Treuhandabfrage case 1
$query_treuhand1 = "SELECT SUBSTRING(LEFT(configuration, LOCATE('$suchstringende_treuhand1', configuration) +0), LOCATE('$suchstringanfang_treuhand1', configuration) +0, 100)
FROM tl_iso_product_collection_item
WHERE LOCATE('$suchstringende_treuhand1', configuration) > 0
AND LOCATE('$suchstringanfang_treuhand1', configuration) > 0 ORDER BY id DESC LIMIT 1";
//Treuhandabfrage case 2
$query_treuhand2 = "SELECT SUBSTRING(LEFT(configuration, LOCATE('$suchstringende_treuhand2', configuration) +0), LOCATE('$suchstringanfang_treuhand2', configuration) +0, 100)
FROM tl_iso_product_collection_item
WHERE LOCATE('$suchstringende_treuhand2', configuration) > 0
AND LOCATE('$suchstringanfang_treuhand2', configuration) > 0 ORDER BY id DESC LIMIT 1";
//results
// Treuhandbetrag
$result_treuhand1 = mysqli_query($connection, $query_treuhand1);
$result_treuhand2 = mysqli_query($connection, $query_treuhand2);
//Display results
if($result_treuhand2 === FALSE) {
echo mysqli_error($connection);
} else
while($row = mysqli_fetch_array($result_treuhand2)){
print_r($row[0]);
}
//Close connection
mysqli_close($connection);
?>
То, что я в основном пытаюсь сделать, это найти строку между
treuhand_betrag
и СЛЕДУЮЩИЙ
«;
Это связано с тем, что магазин хранит все данные атрибутов в одном текстовом поле в базе данных. Я знаю, что это экстренное решение, но мне отчаянно нужна помощь. Пока мой код не даст мне никаких результатов. Если я заменю «; через что-то уникальное, например,« treuhand_price », что происходит только один раз в поле, я получаю желаемый результат.
Как может выглядеть поле TEXT:
Если кто-то дает всю информацию, вы можете ожидать, что поле будет содержать следующее, например:
a:14:{s:6:"roller";s:1:"9";s:16:"treuhand_abfrage";s:2:"37";s:15:"treuhand_betrag";s:4:"2000";s:13:"treuhand_price";s:2:"35";s:11:"abhol_firma";s:18:"NichtdieselbeFirma";s:13:"abhol_vorname";s:14:"AndererVorname";s:14:"abhol_nachname";s:15:"AndererNachname";s:12:"abhol_str_nr";s:15:"AndereStraße 7";s:9:"abhol_plz";s:6:"456465";s:9:"abhol_ort";s:12:"Dschingistan";s:10:"abhol_land";s:3:"Bla";s:13:"abhol_telefon";s:6:"564654";s:11:"abhol_email";s:10:"[email protected]";s:11:"bemerkungen";s:5:"aeawe";}
Если кого-то это не волнует и не выдает слишком много информации:
a:8:{s:6:"roller";s:1:"9";s:16:"treuhand_abfrage";s:2:"36";s:13:"treuhand_price";s:2:"35";s:13:"abhol_vorname";s:5:"Deniz";s:14:"abhol_nachname";s:5:"Cetin";s:12:"abhol_str_nr";s:10:"straße 38";s:9:"abhol_plz";s:5:"90461";s:9:"abhol_ort";s:9:"Nürnberg";}
Я был бы очень рад о какой-либо помощи или подсказки! Заранее спасибо!
Это то, что вы хотите. это немного сложно. Поэтому я переворачиваю строку (и строку поиска), чтобы получить от нее остальное с помощью SUBSTR_INDEX. Я изменил ваше имя поля на STRING в этом примере
SELECT
SUBSTRING_INDEX(REVERSE(
SUBSTRING_INDEX(SUBSTRING_INDEX(
REVERSE('a:14:{s:6:"roller";s:1:"9";s:16:"treuhand_abfrage";s:2:"37";s:15:"treuhand_betrag";s:4:"2000";s:13:"treuhand_price";s:2:"35";s:11:"abhol_firma";s:18:"NichtdieselbeFirma";s:13:"abhol_vorname";s:14:"AndererVorname";s:14:"abhol_nachname";s:15:"AndererNachname";s:12:"abhol_str_nr";s:15:"AndereStraße 7";s:9:"abhol_plz";s:6:"456465";s:9:"abhol_ort";s:12:"Dschingistan";s:10:"abhol_land";s:3:"Bla";s:13:"abhol_telefon";s:6:"564654";s:11:"abhol_email";s:10:"[email protected]";s:11:"bemerkungen";s:5:"aeawe";}')
,'garteb_dnahuert'
,1),';"',-2)),'"',-1);
Результат
2000
пожалуйста, дайте мне знать, если это то, что вы ищете
я копирую из моего ответа в клиент MySQL:
MariaDB [(none)]> SELECT
-> SUBSTRING_INDEX(REVERSE(
-> SUBSTRING_INDEX(SUBSTRING_INDEX(
-> REVERSE('a:14:{s:6:"roller";s:1:"9";s:16:"treuhand_abfrage";s:2:"37";s:15:"treuhand_betrag";s:4:"2000";s:13:"treuhand_price";s:2:"35";s:11:"abhol_firma";s:18:"NichtdieselbeFirma";s:13:"abhol_vorname";s:14:"AndererVorname";s:14:"abhol_nachname";s:15:"AndererNachname";s:12:"abhol_str_nr";s:15:"AndereStraße 7";s:9:"abhol_plz";s:6:"456465";s:9:"abhol_ort";s:12:"Dschingistan";s:10:"abhol_land";s:3:"Bla";s:13:"abhol_telefon";s:6:"564654";s:11:"abhol_email";s:10:"[email protected]";s:11:"bemerkungen";s:5:"aeawe";}')
-> ,'garteb_dnahuert'
-> ,1),';"',-2)),'"',-1);
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| SUBSTRING_INDEX(REVERSE(
SUBSTRING_INDEX(SUBSTRING_INDEX(
REVERSE('a:14:{s:6:"roller";s:1:"9";s:16:"treuhand_abfrage";s:2:"37";s:15:"treuhand_betrag";s:4:"2000";s:13:"treuhand_price";s:2:"35";s:11:"abhol_firma";s:18:"NichtdieselbeFirma";s:13:"abhol_v |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 2000 |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
MariaDB [(none)]>
Других решений пока нет …