MySQL problem - kurios
SorgenkindMech
- datenbank
moins ihr ...
ich steh mal wieder voll aufm schlauch und weiß nich woran es liegen kann
ich will per php n paar mysql-querys machen
der eine query setzt alle felder in der tabelle auf 0 (INT)
und dann gibt es mehrere querys, die einige der felder wieder auf 1 setzten sollen
alle auf 0 funktioniert, aber auf 1 nicht, seltsamerweise
also was hab ich gemacht
erstmal in der console mit selben benutzer angemeldet und getestet - funktioniert (natürlich exakt die selben querys wie in der php-datei)
beispiel: update security set irgentwas='1' where user='Wolfgang';
wie gesagt, konsole ok, im php-script nix
mysql_affected_rows ergibt 0
in der konsole: gefunden 1, geändert 1, warnungen 0
was kann das sein?
und wie gesagt, 3 zeilen vorher der query in der php-datei funktioniert einwandfrei .... und dazwischen is nix was die verbindung zu mysql beeinflusst
abgesehen davon funktioniert das script auf jedem anderen server...
hier paar sys-spec:
win2000 pro SP4
mysql 4.1
php 5.02
IIS5, php als isapi-modul
zuguterletzt noch ein kleines snippet:
$reset = mysql_query("update security set " . mysql_field_name($fields, $i) . "='0' where user='" . $seluser . "'");
}
}
foreach($_POST as $index => $wert)
{
if($index!="user" && $index!="action" && $index!="table" && $index!="key")
{
$query = mysql_query("update " . $_POST['table']. " set " . $index . "='" . $wert . "' where " . $key . "='" . $feld . "'");
echo "update " . $_POST['table']. " set " . $index . "='" . $wert . "' where " . $key . "='" . $feld . "'<br />";
echo mysql_affected_rows($db);
}
}
ich hoffe jemand weiß rat *verzwifel*
echo $begrüßung;
erstmal in der console mit selben benutzer angemeldet und getestet - funktioniert (natürlich exakt die selben querys wie in der php-datei)
Es sind nicht exakt die selben Abfragen. In deinem PHP-Code baust du die Abfragen aus variablen Teilen zusammen. Außerdem ignorierst du Fehlermeldungen, die dir MySQL mit entsprechendem Rückgabewert der mysql_*-Funktionen mitteilen möchte und die du mit mysql_error() abfragen kannst.
Baue deine Abfrage gemäß Beispiel im Handbuch-Kapitel zu MySQL auf. Beachte dort, dass der Abfragebefehl zunächst in einer Variable zusammengestellt wird, deren Inhalt du dir zu Prüfzwecken ausgeben lassen kannst, sowie die Stellen an denen mysql_error() verwendet wird.
Bekommst du nun Fehlermeldungen von MySQL? Wenn nicht prüfe deine Statements.
Außerdem empfiehlt es sich immer noch zum Entwickeln das error_reporting auf E_ALL zu stellen, um weitere wichtige Hinweis-Meldungen von PHP zu erhalten.
echo "$verabschiedung $name";
echo $begrüßung;
erstmal in der console mit selben benutzer angemeldet und getestet - funktioniert (natürlich exakt die selben querys wie in der php-datei)
Es sind nicht exakt die selben Abfragen. In deinem PHP-Code baust du die Abfragen aus variablen Teilen zusammen. Außerdem ignorierst du Fehlermeldungen, die dir MySQL mit entsprechendem Rückgabewert der mysql_*-Funktionen mitteilen möchte und die du mit mysql_error() abfragen kannst.
Baue deine Abfrage gemäß Beispiel im Handbuch-Kapitel zu MySQL auf. Beachte dort, dass der Abfragebefehl zunächst in einer Variable zusammengestellt wird, deren Inhalt du dir zu Prüfzwecken ausgeben lassen kannst, sowie die Stellen an denen mysql_error() verwendet wird.
mysql_error() gibt nix aus, es gibt keine fehler, zumindest nicht von mysql aus, das habe ich schon probiert
und die statements sind exakt identisch, wie du an meinem ebigen post schon gesehen hast habe ich den query einfach kopiert und per echo ausgegeben, den dann in der konsole getestet und es funktionierte
Bekommst du nun Fehlermeldungen von MySQL? Wenn nicht prüfe deine Statements.
... wie gesagt ...
Außerdem empfiehlt es sich immer noch zum Entwickeln das error_reporting auf E_ALL zu stellen, um weitere wichtige Hinweis-Meldungen von PHP zu erhalten.
ist natürlich immer aktiviert
echo "$verabschiedung $name";
bis denn, und schonmal danke für deine kommentare
echo $begrüßung;
mysql_error() gibt nix aus, es gibt keine fehler, zumindest nicht von mysql aus, das habe ich schon probiert
Was gibt denn das mysql_query() zurück? Lass dir das mal mit var_dump() anzeigen. Also bezogen auf dein "snippet" var_dump($reset); und var_dump($query); unmittelbar nach dem jeweiligen mysql_query-Befehl.
echo "$verabschiedung $name";
echo $begrüßung;
mysql_error() gibt nix aus, es gibt keine fehler, zumindest nicht von mysql aus, das habe ich schon probiert
Was gibt denn das mysql_query() zurück? Lass dir das mal mit var_dump() anzeigen. Also bezogen auf dein "snippet" var_dump($reset); und var_dump($query); unmittelbar nach dem jeweiligen mysql_query-Befehl.
echo "$verabschiedung $name";
ICH HABS!!!!!
boarrrr ..........
es ist ja zum heulen..
vor dem ganzen kram stand noch ein mysql_list_fields("andere_db","tabellenname");
statt mysql_list_fields($db_name,"tabellenname");
dadurch wurde wohl die db geändert und somit auch nix mehr gefunden .... *ärger*
jaja, so kanns gehen ;)
bis denn dann
echo $begrüßung;
vor dem ganzen kram stand noch ein mysql_list_fields("andere_db","tabellenname");
statt mysql_list_fields($db_name,"tabellenname");dadurch wurde wohl die db geändert und somit auch nix mehr gefunden .... *ärger*
Das Ausnutzen von PHPs Zuvorkommen dem Programmierer gegenüber rächt sich auch gelegentlich. Wenn ein Script nur mit einer Datenbankverbindung gleichen Typs arbeitet, ist es eindeutig, welche Verbindungskennung zu verwenden ist. PHP kann aber nicht erraten, welche es jeweils nehmen soll, wenn mehrere Verbindungen augebaut werden. Welche es nimmt ist im Handbuch dokumentiert. Wenn man sich angewöhnt den link_identifier-Parameter immer mit anzugeben, bekommt man auch nicht solche Effekte. :-)
echo "$verabschiedung $name";