Zum Inhalt springen

MySql Fehler "Where 1 = 1" ?

Erstellt am 19. Februar 2007 · 14 Antworten · letzte Antwort am 15. August 2007

Tags: Datenbank, Frage

febo ·

Hi typo3´ler

nach dem Update auf die neue Version des tt_Products bekomme ich bei fast allen MySql Abfragen folgenden Fehler:

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /var/lib/typo3/typo3_src-4.0.2/t3lib/class.t3lib_db.php on line 801

Also schaltete ich mal den SQL-Debug Modus ein, um zu sehen wo der Fehler liegt und erhalte folgendes (gekürzt):

caller	t3lib_DB::exec_SELECTquery

ERROR	You have an error in... ... near '' at line 5

lastBuiltQuery
SELECT tt_products_cat.uid uid...
FROM tt_products_cat tt_products_cat
WHERE 1=1 AND tt_products_cat.deleted=0...

Was soll den WHERE 1=1??? Sollte da nicht uid=1 stehen.

Hatt jemand eine Vorstellung woher der Fehler kommt und wie ich ihn beheben kann?

Danke im Voraus.

Gruß febo

steffenk ·

where 1=1 ist hier nur ein Platzhalter und keineswegs verkehrt.

Du musst schon die komplette query zeigen, in dem Ausschnitt ist alles korrekt.

febo ·

Nun gut dann hier alles in ungekürzter Fassung:

Ausgangslage:

PHP5
Apache2
MySql 4.1.11
shop 2.5.2
fh_library 0.0.16
table 0.1.9
conf_userts 1.0.4

caller

t3lib_DB::exec_SELECTquery

ERROR

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 5
lastBuiltQuery SELECT tt_products_cat.uid uid,tt_products_cat.pid pid,tt_products_cat.tstamp tstamp,tt_products_cat.crdate crdate,tt_products_cat.deleted deleted,tt_products_cat.sorting sorting,tt_products_cat.title title,tt_products_cat.subtitle subtitle,tt_products_cat.image image,tt_products_cat.email_uid email_uid
FROM tt_products_cat tt_products_cat
WHERE
1=1 AND tt_products_cat.deleted=0 AND tt_products_cat.uid=1
ORDER BY .sorting

debug_backtrace

require // include // TSpagegen::renderContent // tslib_cObj->cObjGet // tslib_cObj->cObjGetSingle // tslib_cObj->USER // tslib_cObj->callUserFunction // call_user_method // tx_templavoila_pi1->main_page // tx_templavoila_pi1->renderElement // tx_templavoila_pi1->processDataValues // tslib_cObj->cObjGet // tslib_cObj->cObjGetSingle // tslib_cObj->RECORDS // tslib_cObj->cObjGetSingle // tslib_cObj->cObjGetSingle // tslib_cObj->CASEFUNC // tslib_cObj->cObjGetSingle // tslib_cObj->COBJ_ARRAY // tslib_cObj->cObjGet // tslib_cObj->cObjGetSingle // tslib_cObj->CASEFUNC // tslib_cObj->cObjGetSingle // tslib_cObj->CASEFUNC // tslib_cObj->cObjGetSingle // tslib_cObj->cObjGetSingle // tslib_cObj->USER // tslib_cObj->callUserFunction // call_user_method // tx_ttproducts_pi1->main // tx_ttproducts_pi1->doProcessing // tx_ttproducts_pi1->products_display // tx_ttproducts_list_view->printView // tx_ttproducts_category->getMarkerArray // tx_ttproducts_category->get // tx_table_db->exec_SELECTquery // t3lib_DB->exec_SELECTquery // t3lib_DB->debug

HTML Ausgabe

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /var/lib/typo3/typo3_src-4.0.2/t3lib/class.t3lib_db.php on line 801[/b]

febo ·

Hi,

hm... liegt es vielleicht an dem .sorting? Habe in der ext_tables.php vom shop gesehen, das dieser Wert fast überall auskommentiert ist. Ausserdem gefällt mir der Punkt nicht.

febo

igorshmigor ·

Was mir aber auch komisch vorkommt ist:

... ,tt_products_cat.email_uid email_uid
FROM tt_products_cat tt_products_cat
WHERE ...

wieso stehen email_uid und tt_products_cat jeweils doppelt?
Vielleicht ist das der Fehler?

extension22 ·
igorshmigor schrieb

Was mir aber auch komisch vorkommt ist:

... ,tt_products_cat.email_uid email_uid
FROM tt_products_cat tt_products_cat
WHERE ...

wieso stehen email_uid und tt_products_cat jeweils doppelt?
Vielleicht ist das der Fehler?

Beides.
Das eine tt_products_cat muß vor .sorting verschoben werden.
Muß dann "tt_products_cat.sorting" heißen.

febo ·

Hi extension22,

Beides.
Das eine tt_products_cat muß vor .sorting verschoben werden.
Muß dann "tt_products_cat.sorting" heißen.

tja... die Frage ist nur wie, ohne an dem sourcecode der tt_products rumzuschrauben.

extension22 ·
febo schrieb

tja... die Frage ist nur wie, ohne an dem sourcecode der tt_products rumzuschrauben.

Vielleicht den Autor auf den Bug aufmerksam machen?

febo ·

Hi,

entlang dem debug_backtrace habe ich mich zur class.tx_ttproducts_category.php und dann zur class.tx_table.php zurück gearbeitet.

Erstere übergibt an Zweite einen sql-string welcher auch den orderBy Parameter enthält.

Die zweite class übergibt den Wert an die Function transformOrderby($clause) und diese macht Problem. Zuerst wird der String nach Kommas getrennt und den Variablen $field sowie $order zugewiesen (in $field befindet sich nun "sorting"). Danach wird versucht die Variable $field nach Punkten zu trennen, was ja in diesem Falle eines Wortes nicht klappen sollten.

TUT es Aber: string(7) "sorting" array(1) { [0]=> string(7) "sorting" }

Aus diesem Grund wird nun versucht vor sorting die notwendige Tabelle zusammen mit einem Punkt zu hängen.

$fieldArray = t3lib_div::trimExplode ('.', $field);
// no table has been specified?
if (count($fieldArray) == 1 && $this->tableFieldArray[$field] )	{
   $tableName = key($this->tableFieldArray[$field]);
   $fieldTmp = $this->aliasArray[$tableName].'.'.$field;
} else {
   $fieldTmp = $field;
}
$rcArray[] = $fieldTmp.($order ? ' '.$order : '');

...

Ich habe erlich gesagt keine Ahnung warum er diesen String trennen kann, wo doch kein Punkt im String vorkommt?

Irgendjemand eine Ahnung?

Gruß

febo[/b]

steffenk ·

sprich Flink doch direkt an (im Shopforum, also hier 😃 ) oder per PN) - er ist der Autor des Shops und hier im Forum aktiv.

febo ·

hi typo3´ler

nun habe ich noch einmal von vorne begonnen und stehe wieder vor dem gleichen Problem. Allerdings fehlt die Tabelle nun nicht in der ORDER BY Anweisung sondern gleich oben beim SELECT (siehe Zeile 11).

caller
t3lib_DB::exec_SELECTquery


ERROR
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.pid ,.category ,.price ,.price2 ,.tax ,.inStock ,.image ,.note ,.size ,.color
' at line 1


lastBuiltQuery
SELECT .uid ,.pid ,.category ,.price ,.price2 ,.tax ,.inStock ,.image ,.note ,.size ,.color
FROM tt_products products LEFT OUTER JOIN tt_products_cat tt_products_cat ON tt_products_cat.uid=products.category
WHERE
products.pid IN (25) AND 1=1 AND (products.inStock <> 0) AND products.deleted=0 AND products.hidden=0 AND (products.starttime<=1173293786) AND (products.endtime=0 OR products.endtime>1173293786) AND products.fe_group IN (' ',0,-1)
ORDER BY tt_products_cat.sorting
LIMIT 51


debug_backtrace
require // include // TSpagegen::renderContent // tslib_cObj->cObjGet // tslib_cObj->cObjGetSingle // tslib_cObj->USER // tslib_cObj->callUserFunction // call_user_method // tx_templavoila_pi1->main_page // tx_templavoila_pi1->renderElement // tx_templavoila_pi1->processDataValues // tslib_cObj->cObjGet // tslib_cObj->cObjGetSingle // tslib_cObj->RECORDS // tslib_cObj->cObjGetSingle // tslib_cObj->cObjGetSingle // tslib_cObj->CASEFUNC // tslib_cObj->cObjGetSingle // tslib_cObj->COBJ_ARRAY // tslib_cObj->cObjGet // tslib_cObj->cObjGetSingle // tslib_cObj->CASEFUNC // tslib_cObj->cObjGetSingle // tslib_cObj->CASEFUNC // tslib_cObj->cObjGetSingle // tslib_cObj->cObjGetSingle // tslib_cObj->USER // tslib_cObj->callUserFunction // call_user_method // tx_ttproducts_pi1->main // tx_ttproducts_pi1->doProcessing // tx_ttproducts_pi1->products_display // tx_ttproducts_list_view->printView // t3lib_DB->exec_SELECT_queryArray // t3lib_DB->exec_SELECTquery // t3lib_DB->debug

Bei der Neuinstallation bin ich nach dem Tutorial vorgegangen, habe eine neue Seite namens "Produkte" erstellt und darin ein Extension Template "ext+" angelegt. Hier habe ich, wie beschrieben, mein Template für den shop eingetragen.

Leider sagt das Tutorial nichts über die gewählten Inhalte unter "Include static (from extensions):". Dort habe ich folgende Inhalte gewählt:

Static Info Table
FE User Registration (CSS-Styled)
Shop System Old Style

Wähle ich statt "Shop System Old Style" "Shop System Test" wird im Front End nichts angezeigt. Bei Old Style kommen die Fehlermeldungen.

Leider bin ich nach fast zwei Wochen (nicht Ständig) rumprobieren mit meinem Latain am Ende. Ich habe überhaupt keine Ahnung wo ich den Fehler suchen sollen. Ist es nun ein Fehler bei der Installation und Einrichtung oder sind meim PHP und / oder MySql (siehe weiter oben) nicht kompatibel.

Für Hilfe bin ich sehr Dankbar.

Gruß

febo