Laravel framework: rozdiel medzi SELECT na db-table a db-view, chyba 1615 - fórum

Kategorie: Programování / PHP

přidatNový příspěvek

Chcete-li odebírat toto téma e-mailem, přihlašte se nebo se nejprve zaregistrujte.

Laravel framework: rozdiel medzi SELECT na db-table a db-view, chyba 1615

David Loevy, 07.08.2015 10:17:50

v MySQL (na webhostingu Wedos) mám vytvorenú v databáze sadu db-tabuliek a niekoľko view - všetko urobené štandartne cez "phpMyAdmin" pod administratívnym účtom, príkazmi CREATE TABLE ..., resp. CREATE VIEW XY AS SELECT ...).

V Laravel aplikácii (ktorá mi na lokále funguje korektne) sa na webohosting-u vyskytuje chyba pri výbere dát z db-view:

SQLSTATE[HY000]: General error: 1615 Prepared statement needs to be re-prepared (SQL: select * from `nejakeview` where ...)

Táto chyba sa vyskytuje iba pri výbere z db-view v aplikácii vytvorenej v Laravel framework-u:

používam v Laravel tento spôsob:

Route::get('Test4', function() {
$DbViewRecord=DB::table('biznfos')->where('user_id', '=', 10)->get();
$Username = $DbViewRecord[0]->username;
return $Username." - toto je výber z db-view biznfos (1.spôsob)";
});

alebo tento spôsob:

Route::get('Test6', function() {
$DbViewRecord=DB::select('SELECT username FROM biznfos WHERE user_id = ?', array(10));
$Username = $DbViewRecord[0]->username;
return $Username." - toto je výber z db-view biznfos (2.spôsob)";
});


A nepomôže ani vytvorenie eloquent modelu pre toto db-view a prístup k datám z db-view cez model:

Route::get('Test8', function() {
$UserData = BizInfo::where('user_id','=',3)->get();
$Username = $UserData[0]->username;
return $Username." - toto je výber z db-view bizinfo (3.spôsob - cez model)";
});

Poznámka: ak sa pozerám cez "phpMyAdmin" tak údaje z view sa zobrazia v poriadku. Rovnako tiež ak si spustím SQL-príkaz (totožný ako je na PHP-stránke v aplikácii) priamo v "phpMyAdmin", tiež sa data zobrazia bez problémov.

Rovnako, funguje aj výber z db-view cez "klasický" PHP kód/stránku:

php
$servername = "MYSQLSERVER";
$username = "MYUSERNAME";
$password = "MYPASSWORD";
$dbname = "MYDATABASE";
echo "test02: select from db-view BIZINFO";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT user_id, username, first_name, last_name FROM bizinfo";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "id: " . $row["user_id"]. ": Username: ".$row["username"].", Full name: ".$row["first_name"]." ".$row["last_name"];
}
} else {
echo "0 results";
}
$conn->close();


Vyzerá to, že problém je niekde medzi Laravel framework-om a nejakým nastavením MySQL pre view ... má s tým niekto skúsenosť?

PS: napadlo ma, či nemám vytvárať db-view v MySQL na webhosting-u nejakým iným spôsobom?

Přihlášení zákazníka

Nemáte ještě zákaznický účet? Registrace

Copyright © WEDOS, 2018

Facebook RSS