Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Mit 2 Datenbanken arbeiten [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Mit 2 Datenbanken arbeiten


 
Dengo123
01-08-2009, 19:44 
 
Hallo ich habe ein problem:

und zwar funktioniert mysql_select_db($connect1); nicht.

Der Connectet Trotzdem auf $connect2 und wechselt nicht auf $connect1 wenn ich den befehl benutze -.-

Was mache ich falsch?



$connect1 = mysql_connect("localhost", "sql4", "XXXX");
$connect2 = mysql_connect("localhost", "sql1", "XXXX");

mysql_select_db("sql4", $connect1);
mysql_select_db("sql1", $connect2);

mysql_select_db($connect1);
$news_sql2 = "SELECT email FROM user1 WHERE email!='0' LIMIT 0,2";
$news_result2 = mysql_query($news_sql2) or die('Fehler 3: '.mysql_error());
while ($row2 = mysql_fetch_array($news_result2, MYSQL_NUM))
{$emailausdb[] = $row2[0];}

mysql_select_db($connect2);
$news_sql = "SELECT Email FROM letterit_abonnenten WHERE Email!='0' LIMIT 0,2";
$news_result = mysql_query($news_sql) or die('Fehler 3: '.mysql_error());
while ($row = mysql_fetch_array($news_result, MYSQL_NUM))
{$emailindb[] = $row[0];}

echo $emailausdb[0];
echo $emailindb[0];

Dann kommt halt der Fehler: (weil er auf die falsche Datenbank zugreift ... die Table user1 ist halt in der Datenbank sql4)




Fehler 3: Table 'sql1.user1' doesn't exist

 
piratos
01-08-2009, 19:56 
 
resource mysql_query ( string $Anfrage [, resource $Verbindungs-Kennung ] )

mysql_query() sendet eine Anfrage an die zur Zeit aktiven Datenbank, die mit

Ich würde mal die DB Verbindung mit übergeben.

Da fällt mir noch auf:


mysql_select_db($connect1);

mysql_select_db ( string $database_name [, resource $link_identifier ] )

Hab da noch ein gutes Beispiel gefunden:

http://de2.php.net/manual/de/function.mysql-select-db.php#52584

 
Dengo123
01-08-2009, 20:09 
 
danke, es hat funktioniert :)

 
UzumakiNaruto
01-08-2009, 20:12 
 
$connect1 = mysql_connect("localhost", "sql4", "XXXX");
$connect2 = mysql_connect("localhost", "sql1", "XXXX");

mysql_select_db("sql4", $connect1);
mysql_select_db("sql1", $connect2);

$news_sql2 = "SELECT email FROM user1 WHERE email!='0' LIMIT 0,2";
$result = mysql_query($news_sql2, $connect1);
...

wie mein vorredner schon sagte ;)

 
Dengo123
01-08-2009, 21:16 
 
Ich poste mla hier weiter auch wenn es ein anderes problem ist ...

also ich möchte meine eMail-Adressen von Datenbank 1 zu Datenbank 2 übertragen....

allerdings führt er egal ob mit WHILE oder mit FOR schleife .... Das Scrript nur einmal aus ... dann ende ... mit for schleife sogar GARNICHT -.-

WARUM !?!?

Also das er nach 10x oder abbricht würde ich ja verstehen aber das er nach 1x aufhört ? also nur eine eMail-Adresse überträgt....



$connect1 = mysql_connect("localhost", "sql4", "XXX");
$connect2 = mysql_connect("localhost", "sql1", "XXX");

mysql_select_db("sql4", $connect1);
mysql_select_db("sql1", $connect2);

mysql_select_db("db1",$connect1);
mysql_select_db("db2",$connect2);

$count = 1;

$zahl = 100;

while($count < $zahl)
{

$news_sql2 = "SELECT email FROM user1 WHERE email!='0000000000' LIMIT 0,1"; $which2 = $connect1;
$news_result2 = mysql_query($news_sql2,$which2) or die('Fehler 3: '.mysql_error());
while ($row2 = mysql_fetch_array($news_result2, MYSQL_NUM))
{$emailausdb[] = $row2[0];}

$teile = explode("@", $emailausdb[0]);

$which = $connect2;
MYSQL_QUERY("INSERT INTO letterit_abonnenten
(BID, Email, domain, Datum, Option1, Option2, Option3, Option4, Code, Abmeldezeit, Status, IP)
VALUES
( '1', '$emailausdb[0]', '$teile[1]', '1249148047', '', '', '', '', '', '0', '1', '87.122.15.40')",$which);

mysql_query("UPDATE user1 SET email='0000000000' WHERE email='$emailausdb[0]'",$which2);

$count++;

}

 
piratos
01-08-2009, 21:59 
 
Arbeitest du eigentlich mit 4 db's ?

Damit du nicht durcheinander kommst solltest du bei $connect1 und $connect2 bleiben und die $which? fallen lassen.

 
Dengo123
01-08-2009, 22:01 
 
Naja das Script ist ja theoretisch fertig und funktioniert ja auch nur die schleife läuft halt nur 1x durch bzw. als for garnicht.

 
Kropff
01-08-2009, 22:17 
 
Das Problem liegt vermutlich daran, dass die Schleife nur einmal durchlaufen wird und dann mit einem Fehler abbricht. Was ergibt denn ein
... or die(mysql_error());
hinter jedem Query?

Hast du auch mal in der Schleife $count ausgeben lassen? Außerdem weiß ich nicht, ob du diesen Code überhaupt verstanden hast. Das ist völliger Tinnef:

$connect1 = mysql_connect("localhost", "sql4", "XXX");
$connect2 = mysql_connect("localhost", "sql1", "XXX");

mysql_select_db("sql4", $connect1);
mysql_select_db("sql1", $connect2);

mysql_select_db("db1",$connect1);
mysql_select_db("db2",$connect2);
Vieleicht solltest du dir erst mal das hier (http://www.peterkropff.de/tutorials/php_fehler/php_fehler.htm) zu Gemüte führen.

Peter

 
Dengo123
01-08-2009, 22:27 
 
Ich habs geschaft, danke :)

 
Kropff
01-08-2009, 22:54 
 
Ich habs geschaft, danke :)
Dann poste bitte die Lösung und die Ursache. Für andere, die auch so ein Problem haben und wider Erwarten die SuFu nutzen.

Danke
Peter

 
Dengo123
01-08-2009, 23:02 
 
Bitte entschuldige, hier meine Lösung:

Die Ursache ... ist ne gute Frage hab nen fehler "duplicated entry" erhalten. Daher hole ich jetzt nicht nur einen Eintrag aus der DB jetzt raus sondern alle auf einmal und geh die halt mit $a durch :)

und nochmal danke für eure hilfe



<?php

$connect1 = mysql_connect("localhost", "sql4", "XXXX");
$connect2 = mysql_connect("localhost", "sql1", "XXX");

mysql_select_db("sql4", $connect1);
mysql_select_db("sql1", $connect2);


$news_sql2 = "SELECT email FROM user1 WHERE email!='0000000000'"; $which2 = $connect1;
$news_result2 = mysql_query($news_sql2,$which2) or die('Fehler 3: '.mysql_error());
while ($row2 = mysql_fetch_array($news_result2, MYSQL_NUM))
{$emailausdb[] = $row2[0];}

$countx = count($emailausdb);

$count = 0;
$a = 0;

while($count < $countx)
{

$teile = explode("@", $emailausdb[$a]);

$which = $connect2;
MYSQL_QUERY("INSERT INTO letterit_abonnenten
(BID, Email, domain, Datum, Option1, Option2, Option3, Option4, Code, Abmeldezeit, Status, IP)
VALUES
( '1', '$emailausdb[$a]', '$teile[1]', '1249148047', '', '', '', '', '', '0', '1', '87.122.15.40')",$which);

mysql_query("UPDATE user1 SET email='0000000000' WHERE email='$emailausdb[$a]'",$which2);

echo mysql_error();

$count++;
$a++;

}


?>


Alle Zeitangaben in WEZ +2. Es ist jetzt 00:31 Uhr.