Hi,

Ik zou de db van mijn nas willen aanspreken.
via localhost lukt alles. zowel op de nas als op de pc maar vanuit de pc de nas_db lukt me niet.
de code
$con=mysqli_connect('mysql://hass:[email protected]:3306/hass', 'root', 'pw', 'janr_be');
$con=mysqli_connect('192.168.1.14:3306', 'root', 'pw', 'janr_be');
lukt dus niet.
Iemand een idee hoe het wel lukt?

Zowel maria5 als maria10/3306 als 3307 zou moeten lukken dus het gaat uitsluitend om een goed adres :)

Jan
'92.168.1.14:3306'

'192.168.1.14:3306'
nope dat is het niet :)
naam van de nas eveneens niet (ds2)

toch gedeeltelijk :)
Je moet ook nog het IP toegang geven via de admim console in phpMyAdmin of iets vergelijksbaar

GRANT ALL ON dbnaam.* TO user@'IP_ADRES' IDENTIFIED BY 'hetpaswoord'

De database moet geselecteerd zijn. (use dbnaam)

Bedankt. Het was toch de juiste richting:)

[size=xsmall]Toevoeging op 02/01/2020 20:43:29:[/size]

Ik wil de anderen mijn oplossing niet onthouden.
De bedoeling was dus om de totale database te kopiƫren. Ik weet dat een dump de juiste oplossing is maar van 1 pc naar een nas lukt dat volgens mij niet op een automatische manier. :)
Dus hier de totale code welke voor mij werkt. 't is toch maar 78 lijnen.

Jan


<!DOCTYPE html>
<html lang="en">
	<head>
		<title>Copy DB</title>
		<meta charset="utf-8">
        </style>
	</head>
	<body>     
        <?php
            function h1($msg){
                echo '<h1>' . $msg . '</h1>' . PHP_EOL;
            }
            /*
            remember to grant access to all databases
            use: GRANT ALL ON *.* TO user@'IP_Adress' IDENTIFIED BY 'your_password' on the database console
            http://test.local/remoteDB.php
            */
            
            h1('Remote address: ' . $remoteaddress='192.168.0.1:3307');
            h1('Local address: ' . $localaddress='localhost');
            $password = 'paswoord';
            $db = 'databasenaam';
            $user = 'een goede usernaam met de juiste rechten';
            
            $dblink2 = @mysqli_connect($remoteaddress, $user, $password);// connect remote server
            if ($dblink2){
                h1('Remote database connected.');
                $dblink1 = @mysqli_connect($localaddress, $user, $password); // connect server 1
                if ($dblink1){
                    h1('Local database connected.');

                    mysqli_select_db($dblink1, $db);  // select database 1
                    mysqli_set_charset($dblink1, 'utf8');

                    $r2 = mysqli_query($dblink2, 'DROP DATABASE IF EXISTS ' . $db . ';');
                    if(!$r2) {fout(mysqli_error($dblink2));}

                    $r2 = mysqli_query($dblink2, 'CREATE DATABASE ' . $db . ';');//make database 2
                    if(!$r2) {fout(mysqli_error($dblink2));}

                    mysqli_set_charset($dblink2, "utf8");
                    if(!$r2) {fout(mysqli_error($dblink2));}

                    mysqli_select_db($dblink2, $db); // select database 2

                    $tables = mysqli_fetch_all(mysqli_query($dblink1, "SHOW TABLES"), MYSQLI_NUM);
                    foreach($tables as $table){
                        h1('Start table: ' . $table[0]);
                        $tableinfo = mysqli_fetch_array(mysqli_query($dblink1, 'SHOW CREATE TABLE ' . $table[0])); // get structure from table on server 1
                        mysqli_query($dblink2, $tableinfo[1]); // use found structure to make table on server 2
                        $result = mysqli_query($dblink1, 'SELECT * FROM ' . $table[0]); // select all content        
                        while ($row = mysqli_fetch_array($result, MYSQLI_NUM)) {
                            $sql3 = 'INSERT INTO ' . $table[0] . ' VALUES ('; 
                            for($j=0; $j<count($row); $j++) {
                                if(is_null($row[$j])){
                                    $sql3.= ' null'; 
                                }else{
                                    $row[$j] = addslashes($row[$j]);
                                    $sql3 .= '"' . $row[$j] . '"' ;
                                }
                                if ($j<(count($row)-1)) { $sql3.= ', '; }
                            }
                            $sql3 .=');';
                            $r3 = mysqli_query($dblink2, $sql3); // insert one row into new table
                            
                            if(!$r3) {fout(mysqli_error($dblink2));fout($sql3);}
                        }
                    }
                    mysqli_close($dblink1); 
                    mysqli_close($dblink2);
                }else{
                    h1('The local database isn&#39;t connected!');
                }
            }else{
                h1('The remote database isn&#39;t connected!');
            }
        ?>
	</body>
</html>

Reageren