Zum Inhalt springen

SQL Fehler....

Erstellt am 10. August 2007 · 11 Antworten · letzte Antwort am 11. August 2007

Tags: Frage

RT-Schwabe ·

Hallo zusammen,

kann mit einer sagen, warum ich plötzlich (ohne wissentlich etwas am code geändert zu haben) folgenden Fehler erhalte:

Warning: mysql() [function.mysql]: Access denied for user 'www-data'@'localhost' (using password: NO) in /opt/lampp/htdocs/endress.prettl.com/typo3conf/ext/adm_test/pi1/class.tx_admtest_pi1.php on line 35

Warning: mysql() [function.mysql]: A link to the server could not be established in /opt/lampp/htdocs/endress.prettl.com/typo3conf/ext/adm_test/pi1/class.tx_admtest_pi1.php on line 35
Access denied for user 'www-data'@'localhost' (using password: NO)
Warning: Cannot modify header information - headers already sent by (output started at /opt/lampp/htdocs/endress.prettl.com/typo3conf/ext/adm_test/pi1/class.tx_admtest_pi1.php:35) in /opt/lampp/htdocs/endress.prettl.com/typo3conf/ext/adm_test/pi1/class.tx_admtest_pi1.php on line 38

Warning: Cannot modify header information - headers already sent by (output started at /opt/lampp/htdocs/endress.prettl.com/typo3conf/ext/adm_test/pi1/class.tx_admtest_pi1.php:35) in /opt/lampp/htdocs/typo3_src-4.1.1/typo3/sysext/cms/tslib/class.tslib_fe.php on line 2898

Das hier ist meine Extension:

<?php
require_once(PATH_tslib.'class.tslib_pibase.php');
class tx_admtest_pi1 extends tslib_pibase {
	var $prefixId = 'tx_admtest_pi1';		// Same as class name
	var $scriptRelPath = 'pi1/class.tx_admtest_pi1.php';	// Path to this script relative to the extension dir.
	var $extKey = 'adm_test';	// The extension key.
	
		function main($content,$conf)	{
		$this->conf=$conf;
		$this->pi_setPiVarDefaults();
		$this->pi_loadLL();
		$this->pi_USER_INT_obj=1;	// Configuring so caching is not expected. This value means that no cHash params are ever set. We do this, because it's a USER_INT object!
	
 if(isset($this->piVars['submit_button'])) { 
 // WHAT TO DO if content is submitted 

$query = 'INSERT INTO tx_admreport_adm (pid,adm,kundennummer,kundenname,datum,plz,ort,bericht,branche,ansprechpartner,verband,kundenschluessel,warenpraesenz_endress,wettbewerber_1,wettbewerber_2,wettbewerber_3) 
 VALUES(
 "'.addslashes($this->piVars['DATA']['adm']).'", 
 "'.addslashes($this->piVars['DATA']['kundennummer']).'", 
 "'.addslashes($this->piVars['DATA']['kundenname']).'", 
 "'.addslashes($this->piVars['DATA']['datum']).'", 
 "'.addslashes($this->piVars['DATA']['plz']).'", 
 "'.addslashes($this->piVars['DATA']['ort']).'", 
 "'.addslashes($this->piVars['DATA']['bericht']).'", 
 "'.addslashes($this->piVars['DATA']['branche']).'", 
 "'.addslashes($this->piVars['DATA']['ansprechpartner']).'", 
 "'.addslashes($this->piVars['DATA']['verband']).'", 
 "'.addslashes($this->piVars['DATA']['kundenschluessel']).'", 
 "'.addslashes($this->piVars['DATA']['warenpraesenz_endress']).'", 
 "'.addslashes($this->piVars['DATA']['wettbewerber_1']).'",   
 "'.addslashes($this->piVars['DATA']['wettbewerber_2']).'",   
 "'.addslashes($this->piVars['DATA']['wettbewerber_3']).'",
 "'.$GLOBALS['TSFE']->id.'")'; 
 $res = mysql(TYPO3_db, $query); 
 echo mysql_error(); 
 
  header ('Location: '.t3lib_div::locationHeaderUrl('index.php? id=329 ')); 
 } else {  
 
		$content=' 			<h5>Neuen Besuchsbericht eintragen:</h5>
			<form action="'.$this->pi_getPageLink($GLOBALS['TSFE']->id).'" method="POST">
			<input type="hidden" name="no_cache" value="1">	
				<table>
				<tr><td>Datum:</td><td>  <input type="text" name="'.$this->prefixId.'[DATA][datum]" value=""> Bitte nur in der Form: <b>2007-08-25</b> (Jahr-Monat-Tag)  </td></tr>
				<tr><td>Name ADM:</td><td> <select type="text" name="'.$this->prefixId.'[DATA][adm]" value=""> 
					<option value="1">1</option> 
					<option value="2">2</option>
					<option value="3">3</option>
					<option value="4">4</option>
					<option value="5">5</option></select> </td></tr>
				<tr><td>Kundennummer:</td><td> <input type="text" name="'.$this->prefixId.'[DATA][kundennummer]" value=""></td></tr>
				<tr><td>Name Kunde:</td><td> <input type="text" name="'.$this->prefixId.'[DATA][kundenname]" value=""></td></tr>
				<tr><td>Gesprächspartner:</td><td> <input type="text" name="'.$this->prefixId.'[DATA][ansprechpartner]" value=""></td></tr>
				<tr><td>PLZ:</td><td> <input type="text" name="'.$this->prefixId.'[DATA][plz]" value=""></td></tr>
				<tr><td>Ort:</td><td> <input type="text" name="'.$this->prefixId.'[DATA][ort]" value=""></td></tr>
				<tr><td>Branche:</td><td><select type="text" name="'.$this->prefixId.'[DATA][branche]" value=""> 
					<option value=""></option>
					<option value="Brandschutz">Brandschutz</option> 
					<option value="Baugeräte-/Vermietung">Bauegeräte-/Vermietung</option>
					<option value="Werkzeug/Maschinen">Werkzeug/Maschinen</option>
					<option value="Motoristen">Motoristen</option>
					<option value="Elektromaschinenbau">Elektromaschinenbau</option>
					<option value="Elektrogroßhandel">Elektrogroßhandel</option>
					<option value="Schweißtechnik">Schweißtechnik</option>
					<option value="Servicestation">Servicestation</option>
					<option value="Sonstige">Sonstige</option>
					</select>
				<tr><td>Verband:</td><td> <input type="text" name="'.$this->prefixId.'[DATA][verband]" value=""></td></tr>
				<tr><td>Kundenschlüssel:</td><td><select type="text" name="'.$this->prefixId.'[DATA][kundenschluessel]" value=""> 
					<option value="kaufender Kunde">kaufender Kunde</option> 
					<option value="potenzieller Kunde">potenzieller Kunde</option>
					</select>
				<tr><td>Warenpräsenz:</td><td> <input type="text" name="'.$this->prefixId.'[DATA][warenpraesenz]" value=""> Anzahl ESE vor Ort</td></tr>
				<tr><td>Wettbewerber 1:</td><td><select type="text" name="'.$this->prefixId.'[DATA][wettbewerber_1]" value=""> 
					<option value=""></option>
					<option value="1">1</option>
					<option value="2">2</option>
					<option value="3">3</option>
					<option value="4">4</option> 
					<option value="5">5</option>
					<option value="6">6</option>
					<option value="7">7</option>
					</select>
				<tr><td>Wettbewerber 2:</td><td><select type="text" name="'.$this->prefixId.'[DATA][wettbewerber_2]" value=""> 
					<option value=""></option>
					<option value="1">1</option>
					<option value="2">2</option>
					<option value="3">3</option>
					<option value="4">4</option> 
					<option value="5">5</option>
					<option value="6">6</option>
					<option value="7">7</option>
					</select>
				<tr><td>Wettbewerber 3:</td><td><select type="text" name="'.$this->prefixId.'[DATA][wettbewerber_3]" value=""> 
					<option value=""></option>
					<option value="1">1</option>
					<option value="2">2</option>
					<option value="3">3</option>
					<option value="4">4</option> 
					<option value="5">5</option>
					<option value="6">6</option>
					<option value="7">7</option>
					</select>
				<tr><td>Bericht:</td><td> <textarea cols="50" rows="6" name="'.$this->prefixId.'[DATA][bericht]" value=""></textarea></td></tr>
				<tr><td></td><td><input type="submit" name="'.$this->prefixId.'[submit_button]" value="Besuchsbericht eintragen"></td></tr>
				</table>
			</form>
';
}	
		return $this->pi_wrapInBaseClass($content);
	}
}


if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/adm_test/pi1/class.tx_admtest_pi1.php'])	{
	include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/adm_test/pi1/class.tx_admtest_pi1.php']);
}

?>

Gruß
Thorsten

nicki4lu ·

Hallo,

also der Fehler besagt, dass der Benutzer sich nicht an der Datenbank anmelden kann. Überprüfe doch mal bitte, ob sich das Passwort, der Benutzername oder der Server umgestellt hat (durch den Provider). Bei mir war das mal so, dass ich den Server nicht mehr über 'localhost' ansprechen konnte, sondern nur noch über die interne IP '127.0.0.1'.

Liebe Grüße,
Nicole

RT-Schwabe ·

Hallo Nicole,

das ist unser eigener Server und wir haben nix verstellt.. 😢

ich sprech die Datenbank auch nicht mit Benutzername und Passwort an, das einzige auf was ich verweise ist die Tabelle tx_admreport_adm mit einem INSERT.

Kann es daran liegen, dass ich da noch was einfügen muss? Es ging aber schon genauso wie es der Code da zeigt... #angry#

Gruß
Thorsten

nicki4lu ·

Hallo,

du sprichst die Datenbank nicht direkt an, aber Typo3 tut es, wenn du '$res = mysql(TYPO3_db, $query);' aurufst. Überprüfe doch noch mal die localconf.inc.php im typo3-Verzeichnis (Unterverzeichnis) auf die Richtigkeit der Datenbankangaben.

Liebe Grüße,
Nicole

nicki4lu ·

Hallo,

eigentlich nicht. Aber da es die veraltete Version ist, versuche mal die "normale" Variante $GLOBALS['TYPO3_DB']->sql_query($sql) oder noch besser $GLOBALS['TYPO3_DB']->exec_SELECTquery() (siehe Typo3-Referenz für die Parameter).

Habt ihr eure php-Version umgestellt?

Liebe Grüße,
Nicole

RT-Schwabe ·

Hallo Nicole

in der localconf.inc.php sind die Zugangsaten zur DB richtig gesetzt. ich habe auch den user www-data mal angelegt und mit allen rechten ausgestattet....
leider ohne Erfolg

Ein Wechsel der PHP Version ist nicht erfolgt

lg
Thorsten

RT-Schwabe ·

So!

Weil ich mir nicht mehr zu helfen wusste, hab ich die Extension nochmals komplett neu gemacht!

Und siehe da, es ging obwohl der Code genau gleich war wie vorher.

So, jetzt hats 2-3 mal funktioniert und plötzlich taucht der gleiche Fehler wieder auf! #angry#

Ich spring gleich aus dem Fenster...

nicki4lu ·

Hallo,

hast du mal die oben genannten richtigen SQL-Funktionen ausprobiert? Ich weiß nicht, ob es vielleicht daran liegt, dass er mit den gleichen Daten eine zweite Verbindung zur Datenbank aufbauen will?!

Liebe Grüße,
Nicole

steffenk ·

$res=mysql(...) ist aber nicht Dein Ernst, oder ?

Du solltest Dir dringend die TYPO3 DB-Wrapperclasses anschauen, eine query schickt man z.B. so ab:

$res=$GLOBALS['TYPO3_DB']->sql_query($sql);
RT-Schwabe ·

Hallo ihr beiden,

die verschiedenen Möglichkeiten habe ich ausprobiert, Resultat Zero.

steffenk schrieb

$res=mysql(...) ist aber nicht Dein Ernst, oder ?

Das ist nicht auf meinem Mist gewachsen, sondern ich habe mich 1:1 am Tutorial entlang gearbeitet.

ICh habe jetzt mal deine MEthode ausprobiert und im Moment funktionierts wir vorher auch schon. Mal sehen ob es dauerhaft ist oder nach ein paar Einträgen wieder zurückfällt (wohin auch immer...)

GRuß
Thorsten

steffenk ·

na dann solltest Du dem Autor das mal mitteilen, denn so ist das Unsinn - richtig wäre
$res=mysql_query(...)
aber wie gesagt, das ist nicht der TYPO3-Weg.