Okej, så inget av ovanstående svar hade fungerat för mig, men lyckligtvis kunde jag ställa in en databas och få den igång på mitt eget sätt och jag kan nu göra frågor och köra dem framgångsrikt, så jag kommer att dela min metod med dig i hopp om att någon annan som letar igenom internet kan snubbla över detta och inte behöva gå igenom samma huvud som jag gjorde.
Om du vill ha en snabb sammanfattning, rulla bara till Steg 3 och läs vidare därifrån. Om du är helt nybörjare, fortsätt läsa eftersom jag kommer att gå igenom det i detalj.
Ett par saker att nämna:
- Du måste ställa in en databas via en terminal i Cloud 9. Jag hade ingen erfarenhet innan jag gjorde det i en terminal tidigare, men det är väldigt enkelt att lära sig.
- Du kan inte använd
mysql
funktioner måste du användamysqli
, eftersommysql
funktioner är föråldrade och Cloud 9 kommer inte att köra dem.
Steg 1 :Ställ in MySQL på Cloud 9 (i Terminal)
Öppna en ny terminal i ditt projekt (klicka på plustecknet ovanför textredigeraren, välj "Ny terminal"). I terminalen skriver du mysql-ctl start
och tryck på Enter. MySQL kommer att starta på baksidan, men du får inget svar tillbaka i terminalen.
Skriv sedan mysql-ctl cli
och tryck på Enter. Du bör se lite text som börjar som Welcome to the MySQL monitor...
. Grattis, du har ställt in MySQL på ditt Cloud 9-projekt.
Steg 2 :Skapa en testdatabas (i Terminal)
Du kan faktiskt gå vidare och skapa din officiella databas om du vill, men för denna skull gör jag bara en databas som innehåller en tabell som innehåller ett ID och ett användarnamn. Så här är stegen för att ställa in en databas och en tabell. Om du har använt MySQL och databaser tidigare borde det här vara en tårta, men jag ska förklara det i detalj för dem som kanske inte helt förstår MySQL .
- Skriv
SHOW DATABASES;
och tryck på Enter. Detta kommer att visa en lista över aktuella databaser inom ditt projekt. Du kan ange detta när du vill se en lista över dina databaser på det aktuella projektet. - Skriv in
CREATE DATABASE sample_db;
och tryck på Enter. Du bör få enQuery OK, 1 Row affected.
vilket betyder att frågan lyckades. Du kan namnge databasen vad du vill, men för den här lilla genomgången döpte jag den tillsample_db
. - Skriv in
USE sample_db;
och tryck på Enter. Detta väljersample_db
från listan över databaser. - Skriv in
CREATE TABLE users (id INT(11), username VARCHAR(20));
, och tryck på Enter. Detta skapar en tabell med namnetusers
med två kolumner:id
ochusername
. Siffran inom parentes representerar teckenbegränsningen som kolumnen kommer att lagra i databasen. I det här fallet till exempelusername
rymmer inte en sträng som är längre än 20 tecken. - Skriv in
INSERT INTO users (id, username) VALUES (1, "graham12");
, och tryck på Enter. Detta kommer att lägga till ID:t för1
och ett användarnamngraham12
i bordet. Sedanid
kolumnen är enINT
, vi sätter inte citattecken runt det. - Skriv in
SELECT * FROM users;
, och tryck på Enter. Detta kommer att visa allt som finns iusers
tabell. Den enda posten där borde vara det vi infogade från det senaste steget vi just gjorde.
Steg 3 :Hämta de referenser du behöver för att ansluta till databasen från PHP. (i terminal)
Nu har vi lite data i vår tabell som vi kan testa vår mysqli
kontakt med. Men först måste vi få de referenser vi behöver för att ansluta till databasen i PHP. I Cloud 9 behöver vi 5 referenser för att ansluta:
- Värdnamn
- Användarnamn
- Lösenord
- Databasnamn
- Port #
Användarnamn, lösenord, databasnamn och port # är praktiskt taget redan kända för dig vid det här laget. Jag ska förklara:
- Värdnamn - Skriv in
SHOW VARIABLES WHERE Variable_name = 'hostname';
, och tryck på Enter. Du får en tabell som har två kolumner:Variable_name
ochValue
. IValue
kolumnen bör du se något somyourUsername-yourProjectName-XXXXXXX
, därX
s är ett sjusiffrigt nummer. Skriv ner det här numret eller spara det någonstans. Detta är ditt värdnamn. (Om du får en snabb genomgång av denna genomgång, starta bara en ny terminal och starta upp din mysql och välj den databas du vill använda, skriv sedan inSHOW VARIABLES WHERE Variable_name = 'hostname';
. Läs om det här steget från början om du är förvirrad.) - Användarnamn - Ditt användarnamn som du använder för att logga in på Cloud 9.
- Lösenord – Det finns NEJ lösenord för din databas i Cloud 9.
- Databasnamn - Det här skulle vara
sample_db
eller vad du än heter din databas; - Port # - är
3306
. I Cloud 9 är alla dina projekt kopplade till3306
. Detta är en universell konstant för Cloud 9. Det kommer inte att vara något annat. Skriv detta som ett heltal, inte som ett snöre.mysqli_connect()
kommer att tolka port # som enlong
datatyp.
Sista steget :Anslut till databasen med PHP! (med PHP)
Öppna en PHP-fil och namnge den vad du vill.
Jag låtsas att mitt värdnamn är graham12-sample_db-1234567
för det här exemplet och att detta är vad mitt data ser ut som:
- Värdnamn:"graham12-sample_db-1234567"
- Användarnamn:"graham12"
- Lösenord:""
- Databasnamn:"sample_db"
- Port #:3306
Så i PHP , infoga din referenser i enlighet med detta:
<?php
//Connect to the database
$host = "grahamsutt12-sample_db-1234567"; //See Step 3 about how to get host name
$user = "grahamsutt12"; //Your Cloud 9 username
$pass = ""; //Remember, there is NO password!
$db = "sample_db"; //Your database name you want to connect to
$port = 3306; //The port #. It is always 3306
$connection = mysqli_connect($host, $user, $pass, $db, $port)or die(mysql_error());
//And now to perform a simple query to make sure it's working
$query = "SELECT * FROM users";
$result = mysqli_query($connection, $query);
while ($row = mysqli_fetch_assoc($result)) {
echo "The ID is: " . $row['id'] . " and the Username is: " . $row['username'];
}
?>
Om du får ett resultat och inget fel så har du framgångsrikt konfigurerat en databas och skapat en koppling till den med PHP i Cloud 9. Du bör nu kunna göra alla frågor du normalt kan göra.
Obs:Jag demonstrerade den sista delen utan att använda parametriserade frågor för att vara enkel. Du bör alltid använda parametriserade frågor när du arbetar med riktiga webbapplikationer. Du kan få mer information om det här:MySQLi Prepared Statements .