Přepsání na využití mysqli – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Přepsání na využití mysqli – PHP – Fórum – Programujte.comPřepsání na využití mysqli – PHP – Fórum – Programujte.com

 

dvorak-a
~ Anonymní uživatel
7 příspěvků
7. 10. 2015   #1
-
0
-

Dobrý den, pokouším se následující kód:

<?php

	// Figure out the visitor's IP address
	$ip = $_SERVER['REMOTE_ADDR'];

	// Establish a database connection (adjust address, username, and password)
	$dbh = mysql_connect("localhost", "root", "") or die("Could not connect: " . mysql_error());
	mysql_select_db("ip2country");

	// Create a query string
	$country_query = "SELECT country2, country FROM ip2country WHERE ipFrom<=INET_ATON('" . $ip . "') AND ipTo>=INET_ATON('" . $ip . "')";
		  
	// Execute the query
	$country_exec = mysql_query($country_query);

	// Fetch the record set into an array
	$ccode_array = mysql_fetch_array($country_exec);

	// Close the database connection
	mysql_close($dbh);

	// Get the country code from the array and save it as a variable
	$country_code = $ccode_array['country2'];

	// Get the country name from the array and save it as a variable
	$country_name = $ccode_array['country'];
	
	// If the database contains a match, print out the country name and country code, otherwise print the IP address
	if ($country_code != "") { 
	echo '<p>The IP-to-Country database contains a match for your ip address: ' . $ip . '</p>';
	echo '<p>You are located in ' . $country_name . ', and the country code is ' . $country_code . '</p>';
	}else{
	echo '<p>Sorry. The IP-to-Country database does not contain a match for your ip address: ' . $ip . '</p>';
	}

?>

zprovoznit aby fungoval na php 5.5.12 a mysql 5.6.17

<?php 

    // Figure out the visitor's IP address 
    $ip = $_SERVER['REMOTE_ADDR']; 

    // Establish a database connection (adjust address, username, and password) 
    $dbh = ($GLOBALS["___mysqli_ston"] = mysqli_connect("localhost",  "root",  "")) or die("Could not connect: " . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)));
    ((bool)mysqli_query($GLOBALS["___mysqli_ston"], "USE " . ip2country)); 

    // Create a query string 
    $country_query = "SELECT country2, country FROM ip2country WHERE ipFrom<=INET_ATON('" . $ip . "') AND ipTo>=INET_ATON('" . $ip . "')"; 
           
    // Execute the query 
    $country_exec = mysqli_query($GLOBALS["___mysqli_ston"], $country_query); 

    // Fetch the record set into an array 
    $ccode_array = mysqli_fetch_array($country_exec); 

    // Close the database connection 
    ((is_null($___mysqli_res = mysqli_close($dbh))) ? false : $___mysqli_res); 

    // Get the country code from the array and save it as a variable 
    $country_code = $ccode_array['country2']; 

    // Get the country name from the array and save it as a variable 
    $country_name = $ccode_array['country']; 
     
    // If the database contains a match, print out the country name and country code, otherwise print the IP address 
    if ($country_code != "") {  
    echo '<p>The IP-to-Country database contains a match for your ip address: ' . $ip . '</p>'; 
    echo '<p>You are located in ' . $country_name . ', and the country code is ' . $country_code . '</p>'; 
    }else{ 
    echo '<p>Sorry. The IP-to-Country database does not contain a match for your ip address: ' . $ip . '</p>'; 
    } 

?>

toto bohužel nefunguje, děkuji za rady

Nahlásit jako SPAM
IP: 195.113.167.–
Kit+15
Guru
7. 10. 2015   #2
-
0
-

#1 dvorak-a

  • Co znamená "nefunguje"? Nic nedělá nebo vyhazuje chyby?
  • K čemu je dobré pole $GLOBALS? Co obsahuje? Proč to píšeš velkými písmeny?
  • Co má dělat mysqli_connect() v PHP 5.5?
  • co pohledává die() v PHP 5.5? To má ten skript chcípnout?

Možná ti to začne fungovat, až to přepíšeš do PHP 5.5, začneš používat OOP a skvělou třídu PDO.

Nahlásit jako SPAM
IP: 194.228.13.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
dvorak-a
~ Anonymní uživatel
7 příspěvků
7. 10. 2015   #3
-
0
-

vyhazuje to chybu

mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in wamp\www\b.php on line 17

a Undefined variable: country_code in wamp\www\b.php on line 2

Nahlásit jako SPAM
IP: 195.113.167.–
Kit+15
Guru
7. 10. 2015   #4
-
0
-

#3 dvorak-a
Po drobných úpravách mi to funguje bezvadně: 

<?php

$options = array(
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
);
$country_query = <<<SQL
SELECT country2, country FROM ip2country
    WHERE ipFrom<=INET_ATON(?) AND ipTo>=INET_ATON(?)
SQL;
$dsn = "mysql:host=localhost;dbname=ip2country";
$ip = $_SERVER['REMOTE_ADDR'];
try {
    $dbh =  new PDO($dsn,  "root",  "", $options);
    $search = $dbh->prepare($country_query);
    $search->execute([$ip, $ip]);
    $ccode_array = $search->fetch(PDO::FETCH_ASSOC);
    $country_code = $ccode_array['country2'];
    $country_name = $ccode_array['country'];
    if ($country_code != "") {
        echo "<p>The IP-to-Country database contains a match for your ip address: $ip</p>";
        echo "<p>You are located in $country_name, and the country code is $country_code</p>";
    } else {
        echo "<p>Sorry. The IP-to-Country database does not contain a match for your ip address: $ip</p>";
    }
} catch (Exception $e) {
    echo $e->getMessage(), "\n";
}
Nahlásit jako SPAM
IP: 194.228.13.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
dvorak-a
~ Anonymní uživatel
7 příspěvků
7. 10. 2015   #5
-
0
-

díky moc :)

Nahlásit jako SPAM
IP: 195.113.167.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 55 hostů

Podobná vlákna

MySQLi a prepared statements — založil Kuboslav

Ako to zapísať v MySQLi — založil Martin

MySqli update problém — založil Marek

Přepsání C do Javy — založil Neony

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý