Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- const SQL_STATEMENT_CREATE_TABLE =
- "create table if not exists `%s`.`%s` (
- id int not null auto_increment,
- url varchar(512),
- context text,
- whenFound datetime not null,
- primary key (id)
- );";
- //sql0.php
- /*
- * localmente, havendo controlo de php.ini, nem seria necessário fazer
- * extension=php_mysqli.dll #PHP <= 7.2
- * extension = mysqli #PHP >7.2
- * composer require ext-mysqli
- * composer require ext-pdo #PHP Data Objects
- *
- * na Google Cloud Shell, o php.ini não nos oferece todas as liberdades
- * por isso, ignorar as restrições na escrita do composer.json
- * que depois será utilizado pelo app engine
- * composer require ext-mysqli --ignore-platform-reqs
- * composer require ext-pdo --ignore-platform-reqs
- *
- * no SDK, ou no shell terminal, fizémos ainda:
- * gcloud sql instances list #implicou ativar uma API para autorizar consultas ao serviço admin de SQL
- * gcloud sql instances create am-210407 --tier=db-f1-micro --region=europe-west1 #criou a SQL instance "am-210407"
- *
- * a criação da SQL instance demorou minutos
- * a instance foi criada com um user root, mas de password não set
- *
- * estabelecer uma pass para o user root
- * gcloud sql users set-password <user> --host=% --instance=<instance> --password=<password>
- * gcloud sql users set-password root --host=% --instance=am-210407 --password=1234!
- *
- * meta-infos da instância
- * gcloud sql instances describe <instance name>
- * gcloud sql instances describe am-210407
- *
- * prestar atenção à meta-info "connectionName", normalmente, das primeiras infos a serem listadas
- * connectionName: cloud-search-307909:europe-west1:am-210407
- * à connection name aplicamos o prefixo "/cloudsql/"
- * e ficamos com um named-pipe utilizável
- *
- * Uma SQL instance fica associada a um projeto e só pode ser usada por esse projeto
- */
- define ("CLOUD", false); //true para quando estiver a funcionar no App Engine; false nos outros cenários
- //ligação ao serviço de MySQL
- if (CLOUD){
- //na cloud, a ligação será feita através de um named-pipe
- $db = mysqli_connect(
- null ,//no host!
- $userName = "root",
- $userPassword = "1234!",
- null, //database/schema null means "any database"
- $port=3306,
- //$socketOrNamedPipe = "aguardando q a SQL instance seja criada"
- $socketOrNamedPipe = "/cloudsql/cloud-search-307909:europe-west1:am-210407"
- );
- }
- else{
- //noutros cenários (local), a ligação será feita por host name
- $db = mysqli_connect(
- "localhost" ,//no host!
- $userName = "test",
- $userPassword = "1234",
- null, //database/schema null means "any database"
- $port=3306//,
- //$socketOrNamedPipe = null
- );
- }
- $e = mysqli_connect_errno(); //código do erro (0 - sem erro)
- $eM = mysqli_connect_error(); //mensagem do erro ("" - sem erro)
- $strMsg = sprintf(
- "Resultado de mysqli_connect: %d (%s)",
- $e,
- $eM
- );
- echo $strMsg;
- //define ("SQL_STATEMENT_TO_CREATE_SCHEMA", "create schema %s;");
- const SQL_STATEMENT_TO_CREATE_SCHEMA = "create schema %s;";
- $bNoConnectionErrors = $e===0;
- if ($bNoConnectionErrors){
- //formação da query
- $strQuery = sprintf(
- SQL_STATEMENT_TO_CREATE_SCHEMA,
- "db20210407"
- );
- //injeção da query na SQL instance
- $db->query(
- $strQuery
- );
- //OOP
- $e = $db->errno;
- $eM = $db->error;
- //procedimental
- /*
- $e = mysqli_errno($db);
- $eM = mysqli_error($db);
- */
- $strMsg = "Result for query $strQuery is $e ($eM)".PHP_EOL;
- echo $strMsg;
- /*
- * Para vermos a base de dados criada
- * gcloud sql connect <instance name> --user=root
- * gcloud sql connect am-210407 --user=root
- * será pedida a password (e não será visível enquanto a escrevermos)
- * show databases
- * use db20210407
- */
- $strQuery = sprintf(
- SQL_STATEMENT_CREATE_TABLE,
- "db210407", //nome do schema / database
- "searches" //nome da table a criar
- );
- $db->query($strQuery);
- $e = $db->errno;
- $eM = $db->error;
- $strMsg = "Result for query $strQuery is $e ($eM)".PHP_EOL;
- echo $strMsg;
- $db->close();
- //mysqli_close($db);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement