Bräuchte Hilfe bei der Umstellung von mysql_connect auf php7

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
mampfi
Beiträge: 1736
Registriert: 16.08.2005 18:15:29
Lizenz eigener Beiträge: GNU General Public License
Wohnort: münchen

Bräuchte Hilfe bei der Umstellung von mysql_connect auf php7

Beitrag von mampfi » 07.11.2017 18:47:02

Hallo php-Programmierer

Das aktuelle debian stretch beinhaltet php7 und nun laufen meine Datenbankbefehle in den php-Programmen nicht mehr.

Das dürfte daran liegen dass die von mir verwendeten Befehle nicht mehr enthalten sind z.B. mysql_connect

Da bräuchte ich Hilfe bei der Umstellung, steh hier komplett auf dem Schlauch

Relevante Stellen sind fett markiert

$dbserver = "localhost";

$dbuser = "manfred";
$dbpassword = "manfred";
$dbname = "adr";


lese_prio_datei();

$utf8_on = 1;

print "utf8_on=$utf8_on<BR>";
print "<BR>";

$debug=1;

if ($debug==1)
{
print "dbserver=$dbserver <BR>";
print "dbname=$dbname <BR>";
}


mysql_connect($dbserver, $dbuser, $dbpassword) or die("Keine Verbindung zu Datenbank $dbname");
//-------------------------------------------------------------------------------------------------------------------- wie lautet entsprechender mysqli_connect?


mysql_select_db($dbname);
if ($utf8_on == 1) mysql_query("SET NAMES 'utf8'"); [/b]

print "<FONT COLOR = 'BLACK'>"; ////Farbe setzen
print "<FONT SIZE = '1'>"; ////Größe setzen

$debug=1;

$sqlstatement = "SELECT * FROM adr WHERE prio <= " . $prio . " ORDER by nachname, vorname;";

$debug=0;
if ($debug==1) echo "sqlstatement = ", $sqlstatement, "<BR>";


$result=mysql_query($sqlstatement);
//--------------------------------------------------------------------------------------------------------------------------müsste man hier ändern?

while ($dataset = mysql_fetch_array($result)) {

echo $dataset['firma'], " | ", $dataset['nachname'], " ", $dataset['vorname'], " ", $dataset['telefon'], " | ", $dataset['telefon_2']," ",
]
Es gibt viele Foren

thoerb
Beiträge: 1677
Registriert: 01.08.2012 15:34:53
Lizenz eigener Beiträge: MIT Lizenz

Re: Bräuchte Hilfe bei der Umstellung von mysql_connect auf php7

Beitrag von thoerb » 07.11.2017 20:56:33

mampfi hat geschrieben: ↑ zum Beitrag ↑
07.11.2017 18:47:02
Das dürfte daran liegen dass die von mir verwendeten Befehle nicht mehr enthalten sind z.B. mysql_connect
Das ist richtig, die musst du entweder durch mysqli oder PDO-Befehle ersetzen.

Hier ist mysqli ganz gut erklärt: http://www.peterkropff.de/site/php/mysqli.htm

...und auch PDO: http://www.peterkropff.de/site/php/pdo.htm

Benutzeravatar
Meillo
Moderator
Beiträge: 8782
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Bräuchte Hilfe bei der Umstellung von mysql_connect auf php7

Beitrag von Meillo » 07.11.2017 21:45:07

Es gibt auch automatische Code-Umbau-Scripte (such mal nach ``php7 mysql mysqli convert'' o.ae.), ich hab's aber lieber von Hand gemacht. Es gibt ja auch noch ein paar andere inkompatible Aenderungen in PHP7, z.B. bei foreach.

Hab mir damals den Migration-Guide http://php.net/manual/en/migration70.php vorgenommen (den ich ziemlich gut finde) und einige Blogposts/Tutorials zum Wechsel auf PHP7, dann bin ich den Code systematisch durchgegangen. Um die relevanten Stellen zu finden und rur Kontrolle, habe ich die Tools php7cc, php7mar und phpcompatibility genutzt ... die waren eine gute Unterstuetzung.
Use ed once in a while!

mampfi
Beiträge: 1736
Registriert: 16.08.2005 18:15:29
Lizenz eigener Beiträge: GNU General Public License
Wohnort: münchen

Re: Bräuchte Hilfe bei der Umstellung von mysql_connect auf php7

Beitrag von mampfi » 07.11.2017 22:04:58

Leider bin ich mit meinen alleinigen Versuchen nicht erfolgreich gewesen, statt jeden falschen Befehl hier zu posten, hab ich hier um detaillierte Hilfe gebeten.

Ich finde mich in den Anleitungen nicht zurecht.

War auf der Suche nach einer Art Befehlsübersetzungstabelle in der Art von

Alt: mysql_connect(
Neu: mysqli_connect(



Vielleicht sollte ich die php-Arbeit von damals einfach in die Tonne treten.

Bin mir bewusst, dass ich die Hilfeanforderung wohl überspannt hab.
Wenn ich ein einfacheres Beispiel posten würde, würde meiner Bitte um die Einzelhilfe dann entsprochen?
Es gibt viele Foren

thoerb
Beiträge: 1677
Registriert: 01.08.2012 15:34:53
Lizenz eigener Beiträge: MIT Lizenz

Re: Bräuchte Hilfe bei der Umstellung von mysql_connect auf php7

Beitrag von thoerb » 07.11.2017 23:05:22

mampfi hat geschrieben: ↑ zum Beitrag ↑
07.11.2017 22:04:58
War auf der Suche nach einer Art Befehlsübersetzungstabelle in der Art von
Alt: mysql_connect(
Neu: mysqli_connect(
Schau mal hier: http://www.peterkropff.de/site/php/mysq ... dlagen.htm Punkt 1 und 2.

Code: Alles auswählen

mysql_connect($dbserver, $dbuser, $dbpassword) or die("Keine Verbindung zu Datenbank $dbname");
//-------------------------------------------------------------------------------------------------------------------- wie lautet entsprechender mysqli_connect?
http://php.net/manual/de/mysqli.construct.php

mampfi
Beiträge: 1736
Registriert: 16.08.2005 18:15:29
Lizenz eigener Beiträge: GNU General Public License
Wohnort: münchen

Re: Bräuchte Hilfe bei der Umstellung von mysql_connect auf php7

Beitrag von mampfi » 07.11.2017 23:25:08

gerade merk ich dass mein gepostetes Beispiel "telefon_liste.php" nicht das einfachste ist sondern meine "vokabeln_liste.php"

Gibt auf der Seite ein Suchfeld?

Suche gerade danach, ob sich mysql_fetch_array auch geändert hat
Zuletzt geändert von mampfi am 07.11.2017 23:33:41, insgesamt 1-mal geändert.
Es gibt viele Foren

thoerb
Beiträge: 1677
Registriert: 01.08.2012 15:34:53
Lizenz eigener Beiträge: MIT Lizenz

Re: Bräuchte Hilfe bei der Umstellung von mysql_connect auf php7

Beitrag von thoerb » 07.11.2017 23:26:56


mampfi
Beiträge: 1736
Registriert: 16.08.2005 18:15:29
Lizenz eigener Beiträge: GNU General Public License
Wohnort: münchen

Re: Bräuchte Hilfe bei der Umstellung von mysql_connect auf php7

Beitrag von mampfi » 07.11.2017 23:42:14

Danke, war auf einer falschen Abzweigung

Wenn dann würde ich mich für mysqli entscheiden, da das noch ähnlicher ist und PDO nicht installiert ist.

Wenn ichs richtig gelesen hab, dann übernehmen die mysqli-Funktionen die selben Parameter in der selben Reihenfolge wie die veralteten Funktionen.

(Sollte Schlussmachen für heute, hab zu später Stunde noch mehr Hirnsausen)
Es gibt viele Foren

thoerb
Beiträge: 1677
Registriert: 01.08.2012 15:34:53
Lizenz eigener Beiträge: MIT Lizenz

Re: Bräuchte Hilfe bei der Umstellung von mysql_connect auf php7

Beitrag von thoerb » 08.11.2017 00:04:24

Wenn du dir hier nochmal diesen Link anschaust, da bekommst du auf der rechten Seite alle alten mysql*-Befehle aufgelistet.

Da würde ich an deiner Stelle alle Befehle die du in deinem Script hast, einen nach dem anderen durchgehen. Oben bekommst du immer eine Warnung mit den entsprechenden Alternativen angezeigt. Wenn du auf die Alternative (mysqli) klickst findest du weiter unten ein Beispiel für prozeduralen Stil. Das kannst du dann mit deinem Code abgleichen und ändern.

Code: Alles auswählen

$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query = "SELECT Name, CountryCode FROM City ORDER by ID LIMIT 3";
$result = mysqli_query($link, $query);

/* numeric array */
$row = mysqli_fetch_array($result, MYSQLI_NUM);
printf ("%s (%s)\n", $row[0], $row[1]);

/* associative array */
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);
printf ("%s (%s)\n", $row["Name"], $row["CountryCode"]);

/* associative and numeric array */
$row = mysqli_fetch_array($result, MYSQLI_BOTH);
printf ("%s (%s)\n", $row[0], $row["CountryCode"]);

/* free result set */
mysqli_free_result($result);

/* close connection */
mysqli_close($link);

Benutzeravatar
Meillo
Moderator
Beiträge: 8782
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Bräuchte Hilfe bei der Umstellung von mysql_connect auf php7

Beitrag von Meillo » 08.11.2017 11:03:00

mampfi hat geschrieben: ↑ zum Beitrag ↑
07.11.2017 22:04:58
Ich finde mich in den Anleitungen nicht zurecht.
Warum nimmst du dann kein automatisches Konvertierthelferlein (wie von mir oben erwaehnt)? Das konvertiert dir deinen Code (mach es auf einer Code-Kopie, dann kannst du die Veraenderungen anschliessend per diff anschauen). Da gabe es z.B.: https://github.com/philip/MySQLConverterTool

Oder du verwendest https://github.com/dshafik/php7-mysql-shim, welches dir Kompatibilitaetswrapper bereitstellt, so dass du deinen Code gar nicht veraendern musst und trotzdem im Hintergrund mysqli verwendet wird.
Use ed once in a while!

mampfi
Beiträge: 1736
Registriert: 16.08.2005 18:15:29
Lizenz eigener Beiträge: GNU General Public License
Wohnort: münchen

Re: Bräuchte Hilfe bei der Umstellung von mysql_connect auf php7

Beitrag von mampfi » 08.11.2017 15:02:53

Könnte sein, dass es um diesen Thread eine Weile ruhig wird, da ich ein paar andere Fehlersuchen vorziehe
Es gibt viele Foren

ViNic

Re: Bräuchte Hilfe bei der Umstellung von mysql_connect auf php7

Beitrag von ViNic » 19.11.2017 20:13:08

mampfi hat geschrieben: ↑ zum Beitrag ↑
07.11.2017 22:04:58
Vielleicht sollte ich die php-Arbeit von damals einfach in die Tonne treten.
Musst eigentlich nicht. In deinem "einfachen" Fall musst du mysql_connect durch mysqli_connect ersetzen.

Einfaches Beispiel:

Code: Alles auswählen

$con = mysqli_connect(...);

$sql = "SELECT * FROM tabelle";

mysqli_query($con, $sql);
Der Unterschied zwischen mysqli_query und mysql_query liegt darin, das mysqli_query einen zusätzlichen parameter benötigt.

mysql_query($sql);
mysqli_query($con,$sql);

Konverter würde ich nur empfehlen wenn man weiß, was man genau macht. Oder man hat Glück und der Konverter bastelt etwas brauchbares zurecht.

Antworten