2
votes

Connexion PHP à la base de données de l'instance Google Cloud Sql avec mysqli_connect

Je ne sais pas comment utiliser Google Cloud SQL et PHP . Je ne parviens pas à me connecter à mon instance Cloud SQL à l'aide de mysqli_connect . J'ai fait beaucoup de recherches en ligne, mais je n'arrive toujours pas à me connecter. J'ai indiqué les variables dans le test.php mais je ne sais pas comment les utiliser. Aidez-moi

​​J'essaie de créer une application Android , dans laquelle je devrai afficher les données d'une base de données. J'utilise la méthode de stockage des fichiers php dans le stockage cloud et mon application enverrait une requête GET ou POST au php Les fichiers et les fichiers php renverraient des données de la base de données. Alors, comment puis-je utiliser php uniquement pour me connecter à la base de données?

test.php:

<?php
    $public_ip_address = "xx.xxx.xxx.xxx"; // Public IP address of the Instance of Google Cloud SQL
    $user = "root";
    $password = "";
    $instance = "instance_1";
    $database = "db1";

    $conn = mysqli_connect("cloudipad:" + $public_ip_address, $user, $password, $database);
?>

Quelqu'un m'aideeeeeeeeeeeeeeeeeeeeeeeeeeeee :(


3 commentaires

Avez-vous suivi la documentation?


Ouais. Plusieurs fois. Mais les étapes sont très très floues


Je l'ai lu encore et encore et pourtant mysqli_connect n'est même pas mentionné une seule fois. Ou est-ce que nous ne pouvons pas nous connecter à l'instance en utilisant mysqli_connect


4 Réponses :


-1
votes

Je ne pense pas que vous puissiez vous connecter via mysqli à Google Cloud. Utilisez plutôt leur APi.

voir:

https://cloud.google.com/php/getting-started / bonjour le monde


3 commentaires

Ouais, j'ai passé 8 heures à regarder ça mais c'est trop vague. Existe-t-il un autre Cloud SQL en ligne auquel on peut facilement se connecter via php


Êtes-vous sûr de pouvoir le faire?


Je suis nouveau sur php. Idk beaucoup. La seule méthode simple que je connaisse est mysqli_connect



0
votes
class Sql implements DataModelInterface
{
    private $dsn;
    private $user;
    private $password;

    public function __construct($dsn, $user, $password)
    {
        $this->dsn = $dsn;
        $this->user = $user;
        $this->password = $password;
    }

 private function newConnection()
    {
        $pdo = new PDO($this->dsn, $this->user, $this->password);
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        return $pdo;
    }
}

12 commentaires

Erreur fatale: Uncaught PDOException: nom de source de données non valide dans C: \ xampp \ htdocs \ flexBox \ test.php: 4 Trace de pile: # 0 C: \ xampp \ htdocs \ flexBox \ test.php (4): PDO -> __ construct ('xx.xxx.xxx.xxx', 'root', '') # 1 {main} jeté dans C: \ xampp \ htdocs \ flexBox \ test.php à la ligne 4


veuillez suivre google doc cloud.google.com/php/ Getting-started / using-cloud-sql-with-my‌ sql et github.com/GoogleCloudPlatform/getting-started-php/tree/mast‌er /…


pouvez-vous me référer à quelle section dois-je lire. J'ai passé 4 heures à lire ça, tout ce qui y est écrit est trop vague.


github.com/GoogleCloudPlatform/getting- started-php / tree / mast‌ er /…


Je ne trouve mysqli_query dans aucun de ces fichiers


cet exemple fournit une connexion pdo si vous exécutez une requête, suivez la méthode pdo $ pdo = $ this-> newConnection (); $ pdo = $ this-> newConnection (); $ statement = $ pdo-> prepare ('SELECT * FROM books WHERE id =: id'); $ instruction-> bindValue ('id', $ id, PDO :: PARAM_INT); $ instruction-> execute (); return $ instruction-> fetch (PDO :: FETCH_ASSOC);


Je suis nouveau en php, je ne comprends pas cette syntaxe avancée utilisée ->


Avant de lire la connexion PDO en php. Ceci est un exemple de requête exécutée dans une connexion pdo $ conn = new PDO ("mysql: host = $ servername; dbname = $ dbname", $ username, $ password); $ conn-> setAttribute (PDO :: ATTR_ERRMODE, PDO :: ERRMODE_EXCEPTION); $ stmt = $ conn-> prepare ("SELECT id, prénom, nom FROM MyGuests"); $ stmt-> execute (); // définit le tableau résultant sur associatif $ result = $ stmt-> setFetchMode (PDO :: FETCH_ASSOC);


Existe-t-il un autre Cloud SQL en ligne qui peut être facilement connecté à php avec une commande comme mysqli_connect ?


continuons cette discussion dans le chat .


Désolé, je devrai partir dans 20 minutes. Mais si vous connaissez d'autres bases de données de stockage en ligne qui peuvent être facilement connectés à php mysqli_connect , faites-le moi savoir.


$ pdo = new PDO ("mysql: host =". $ public_ip_address. "; dbname =". $ database, $ user, $ password); J'ai essayé, mais cela échoue



0
votes

Selon la documentation officielle de mysqli_connect , vous vous transmettez le premier paramètre de manière incorrecte.

Et oui, vous pouvez utiliser MySQLi pour vous connecter à une instance Cloud SQL. Si c'est localement, vous devez utiliser le proxy Cloud SQL en suivant le documentation .

Une fois que vous avez écouté le proxy Cloud SQL et que vous avez changé la dernière ligne de votre extrait de code en:

    $conn = mysqli_connect('127.0.0.1', $user, $password, $database);

Vous devriez vous connecter avec succès. p >


7 commentaires

Alors, après avoir téléchargé le proxy Cloud SQL , que dois-je faire. Pourquoi 127.0.0.1 est-il utilisé?


J'exécute le proxy Cloud SQL mais rien ne se passe


Est-il obligatoire d'utiliser ce proxy Cloud SQL ?


J'essaie de créer une application Android, dans laquelle je devrai afficher les données d'une base de données. J'utilise la méthode de stockage des fichiers php dans le stockage cloud et mon application enverrait une requête GET ou POST au php Les fichiers et les fichiers php renverraient des données de la base de données. Alors, comment puis-je utiliser php uniquement pour me connecter à la base de données?


D'où souhaitez-vous vous connecter à l'instance Cloud SQL?


À partir d'un fichier php qui sera stocké dans le stockage cloud de Google.


Veuillez lire la documentation ( cloud.google.com/storage/docs/hosting-static -website ) sur l'hébergement de sites Web statiques avec Google Cloud Storage, aucun script côté serveur ne peut être exécuté dans ce contexte.



1
votes

mysqli_connect fonctionne très bien pour moi, pour connecter une application PHP exécutée sur Google Cloud App Engine à Cloud SQL ...

// DMBS here means database management system, like Cloud SQL
define('HOSTSPEC', NULL);
define('USERNAME', '[MY_DBMS_USERNAME]');
define('PASSWORD', '[MY_DBMS_PASSWORD]');
define('DATABASE_INSTANCE_NAME', NULL); // Or the name of a database instance within your Cloud SQL instance.
define('PORT', NULL);
define('SOCKET', '/cloudsql/[GOOGLE_CLOUD_PROJECT_NAME]:[GOOGLE_CLOUD_REGION]:[CLOUD_SQL_DBMS_INSTANCE_NAME]');

// Option 1. Object-oriented style...
$mysqli = new mysqli(HOSTSPEC, USERNAME, PASSWORD, DATABASE_INSTANCE_NAME, PORT, SOCKET);

// Option 2. Procedural style...
$DBMSresource = mysqli_connect(HOSTSPEC, USERNAME, PASSWORD, DATABASE_INSTANCE_NAME, PORT, SOCKET);
if (!$DBMSresource)
    // log and handle error, maybe exit...


0 commentaires