# SQL Querry aus externer Datenbank

**URL:** <https://forum.shopware.com/t/sql-querry-aus-externer-datenbank/49657>\
**Category:** Programmierung\
**Created:** [23. November 2017 um 07:32 UTC](https://forum.shopware.com/t/sql-querry-aus-externer-datenbank/49657 "2017-11-23T07:32:09Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![schlueter550v](https://avatars.discourse-cdn.com/v4/letter/s/b782af/32.png) [@schlueter550v](https://forum.shopware.com/u/schlueter550v)\
**Post date:** [23. November 2017 um 07:32 UTC](https://forum.shopware.com/t/sql-querry-aus-externer-datenbank/49657/1 "2017-11-23T07:32:09Z")

</div>

Hallo Community,

ich benötige mit einem Shopware Plugin Zugriff auf eine andere Datenbank. Im Plugin habe ich folgendes  
&nbsp;

```
$db = new mysqli("localhost", "sqldb", "sqlpw", "sqldb");
if ($db->connect_errno) {
 die("Verbindung fehlgeschlagen: " . $db->connect_error);
}
$sql="SELECT 'filename' FROM 'Files';";
$filelist = $db->query($sql);
$view->assign("filelist",$filelist);

```

wenn ich nun mit Symfony die Smartyvariable $filelist suche, steht als Wert nur „false“

was mach ich Falsch?

Gruß Schlueter550v

---

<div class="post-metadata">

**Author:** ![schlueter550v](https://avatars.discourse-cdn.com/v4/letter/s/b782af/32.png) [@schlueter550v](https://forum.shopware.com/u/schlueter550v)\
**Post date:** [23. November 2017 um 08:53 UTC](https://forum.shopware.com/t/sql-querry-aus-externer-datenbank/49657/2 "2017-11-23T08:53:18Z")

</div>

Hallo, ich hab die Query mal geändert:

```
$sql="SELECT * FROM Files";

```

jetzt bekomme ich in Symfony folgende Ausgabe:

```
"filelist" => "[object] (mysqli_result: {"current_field":null,"field_count":null,"lengths":null,"num_rows":null,"type":null})"

```

&nbsp;

---

<div class="post-metadata">

**Author:** ![Patrick\_Stahl](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/patrick_stahl/32/7679_2.png) [@Patrick\_Stahl](https://forum.shopware.com/u/Patrick_Stahl)\
**Post date:** [23. November 2017 um 09:45 UTC](https://forum.shopware.com/t/sql-querry-aus-externer-datenbank/49657/3 "2017-11-23T09:45:57Z")

</div>

Hallo @schlueter550v‍,

der Aufruf von „mysqli\_query()“ gibt dir ein sogenanntes [MySQLi Result Objekt](http://php.net/manual/de/class.mysqli-result.php) zurück.  
Auf diesem Result Objekt musst du jetzt nochmal eine Methode aufrufen, um deine Ergebnisse herauszubekommen.  
Dabei hast du bspw. so Möglichkeiten wie „fetch\_all“, „fetch\_field“ oder „fetch\_assoc“ - alle&nbsp;Details dazu findest du in dem o.g. Link.

Da du ein **SELECT \*&nbsp;** ausführst, wirst du ein „fetch\_all“ benötigen.  
Damit das Ergebnis auch so benannt ist, wie die Spalten in deiner Datenbank, wird dort als Parameter noch ein „MYSQLI\_ASSOC“ angewendet.

```
$mySqliResult = mysqli_query($sql);
$fileList = $mySqliResult->fetch_all(MYSQLI_ASSOC);

```

Hilft dir dies weiter?

Gruß,  
Patrick&nbsp; ![Shopware](https://forum.shopware.com/plugins/CKEditor/plugins/smiley/images/shopware.png "Shopware")

&nbsp;

---

<div class="post-metadata">

**Author:** ![PStadtfeld](https://avatars.discourse-cdn.com/v4/letter/p/3bc359/32.png) [@PStadtfeld](https://forum.shopware.com/u/PStadtfeld)\
**Post date:** [23. November 2017 um 09:55 UTC](https://forum.shopware.com/t/sql-querry-aus-externer-datenbank/49657/4 "2017-11-23T09:55:30Z")

</div>

Bist du sicher, dass in der Datenbank auch etwas steht?

Ansonsten vielleicht mal so versuchen:

```
$db = new PDO('mysql:host=localhost;dbname=test', $user, $pass);

$res = $db->query('SELECT * FROM `Files`', PDO::FETCH_ASSOC);

//danach entweder
$view->assign("fieldlist",count($res));
//oder sowas wie
$view->assign("fieldlist",print_r($res,true));

```

In der tpl sollte dann für {$filelist} entweder die Anzahl der Treffer, oder das Ergebnis der Suche stehen…

Ist das nach wie vor nicht der Fall, versuche doch mal die letzte SQL-Fehlermeldung auszugeben, das wäre dann sowas wie `$dbh->errorInfo()`&nbsp; denke ich.

Zum Nachschlagen: [http://php.net/manual/de/book.pdo.php](http://php.net/manual/de/book.pdo.php)

---

<div class="post-metadata">

**Author:** ![schlueter550v](https://avatars.discourse-cdn.com/v4/letter/s/b782af/32.png) [@schlueter550v](https://forum.shopware.com/u/schlueter550v)\
**Post date:** [23. November 2017 um 10:39 UTC](https://forum.shopware.com/t/sql-querry-aus-externer-datenbank/49657/5 "2017-11-23T10:39:12Z")

</div>

Hallo,

danke für eure Tipps, der von Patrick hat mir sehr weitergeholfen. Er wirft nun zumindest schon mal was aus. Nur leider irgendetwas Wirres.  
Der Smarty Block sieht so aus:

```
{block name='frontend_index_content'}
testaus dem Theme Variable {$currentcontroller}
	
		{foreach from=$filelist item=filearray}
			{foreach from=$filearray item=file}
				{$file.filename}
			{/foreach}
		{/foreach}
	
{/block}

```

Als Ausgabe erhalte ich sowas:

- m
- .
- m
- &nbsp;
- 0
- m
- S
- 0
- m
- S
- 0
- m
- D
- 0
- m
- D
- 0
- m
- S
- 0
- m
- D
- 0
- m
- D
- 0
- m
- S
- 0
- m
- D

Das sind immer die Anfangsbuchstaben der Zellen??

---

<div class="post-metadata">

**Author:** ![PStadtfeld](https://avatars.discourse-cdn.com/v4/letter/p/3bc359/32.png) [@PStadtfeld](https://forum.shopware.com/u/PStadtfeld)\
**Post date:** [23. November 2017 um 10:58 UTC](https://forum.shopware.com/t/sql-querry-aus-externer-datenbank/49657/6 "2017-11-23T10:58:22Z")

</div>

Filearray ist die Reihe, File das Feld. Probier’s mal nur mit {$file}

---

<div class="post-metadata">

**Author:** ![schlueter550v](https://avatars.discourse-cdn.com/v4/letter/s/b782af/32.png) [@schlueter550v](https://forum.shopware.com/u/schlueter550v)\
**Post date:** [23. November 2017 um 11:14 UTC](https://forum.shopware.com/t/sql-querry-aus-externer-datenbank/49657/7 "2017-11-23T11:14:19Z")

</div>

Aber es ist doch ein Doppelter Array.  
$filelist ist das SQL-Ergebniss mit in meinem Fall 13000 Einträgen. Somit ist doch $filearray, ein einzelnes Element. $file ist doch dann das Array mit meinen SQL Spalten.

---

<div class="post-metadata">

**Author:** ![PStadtfeld](https://avatars.discourse-cdn.com/v4/letter/p/3bc359/32.png) [@PStadtfeld](https://forum.shopware.com/u/PStadtfeld)\
**Post date:** [23. November 2017 um 11:59 UTC](https://forum.shopware.com/t/sql-querry-aus-externer-datenbank/49657/8 "2017-11-23T11:59:40Z")

</div>

Wenn du es so gebaut hast, wie oben beschrieben, dann ist $filelist dein SQL-Ergebnis, $filearray demnach eine Zeile aus diesem Ergebnis und $file entspricht einem Wert der Zeile. Hast du’s mal probiert?
