2012-03-29 8 views
1

Ich habe ein gutes Stück Forschung darüber gemacht, was ich tun will, obwohl ich nichts gefunden habe. Ich bin nicht sicher, ob ich für das Richtige bin auf der Suche :(Ich bin auch ein bisschen neu in PHP und MySQL-Syntax, so bitte ist freundlich,Mysql Query, Vergleichen von Werten und Zuweisen zu PHP-Variablen

Ich mag folgend in dieser Reihenfolge auszuführen:.

  1. Verbindung zu einer Datenbank (DONE)
  2. Abfrage nach einer bestimmten Zeichenfolge (ich glaube, im done) Von hier bekommt ist ein bisschen unscharf :(
  3. Wenn eine Übereinstimmung für die Variable gefunden wird, kopieren Sie die ganze Zeile (Ich brauche andere Variablen.)
  4. Weisen Sie die Werte der SQL-Abfrage einem P zu HP Variablen.
  5. Von dort werde ich Recht haben, weiterzumachen.

Ich habe die Verbindung zur Datenbank mit der folgenden festgelegt:

function connect() { 
$dbname = 'database'; 
$dbuser = 'username'; 
$dbpass = 'password'; 
$dbhost = 'localhost'; 
mysql_connect($dbhost, $dbuser, $dbpass) or die("Unable to connect to database"); 
} 

Und dann die Funktion aufrufen connect();

ich die Datenbank für einen bestimmten Wert dann abfragen wollen, im Interesse von diesem Argument verwende ich einen statischen Wert. Dies ist, was ich habe: (etwas entlang der Linien von mysql Zeilen)

mysql_select_db(DATABASENAME) or die("Unable to select database"); 
$query = "SELECT * FROM `TABLE` WHERE `COLUMN` LIKE 'VAULE'"; 
$result=mysql_query($query); 

Von hier ich bin nicht sicher, wie das Abfrageergebnis zu vergleichen, um zu sehen, ob es eine Übereinstimmung gibt. Wenn es eine Übereinstimmung gibt, möchte ich die gesamte Zeile erhalten und jeden Wert einer PHP-Variablen zuweisen.

Ich bitte dich nicht, es für mich zu tun, einfach ich kicke in die richtige Richtung sollte in Ordnung sein!

Hoffe, dass es es genug erklärt :)

Vielen Dank für Ihre Führung

+0

Dies ist möglicherweise kein Produktionssystem, aber ich hätte immer noch nicht das Passwort geschrieben ... –

+0

Kris, Danke, die Passwörter und Benutzernamen sind nicht real, ich habe sie nur für den Kontext Zwecke gemacht :) –

Antwort

-1

Versuchen Sie, die Datenbankverbindung in einer anderen Seite keine Notwendigkeit zu verwenden, Funktion und umfassen die Seite in schreiben, wo immer Sie brauchen.

ex: require_once 'dbConnect.php'; 

dbConnect.php besteht:

<?php 
$dbname = 'datadump_pwmgr'; 
$dbuser = 'datadump_pwmgr'; 
$dbpass = 'kzddim05xrgl'; 
$dbhost = 'localhost'; 
mysql_connect($dbhost, $dbuser, $dbpass) or die("Unable to connect to database"); 
?> 
+0

kann ich sein habe deine Frage nicht richtig beantwortet. – vvr

0

Ich glaube, du bist für so etwas suchen:

$count = mysql_num_rows($result); 

//if there is more then 1 record retrieved from the database 
if($count > 0) 
{ 
    //Do what ever you want to do here, which I think you want to be 
    while ($row = mysql_fetch_assoc($result)) 
    { 
     echo $row["Columnname1"]; 
     echo $row["Columnname2"]; 
     echo $row["Columnname3"]; 
    } 
} 

else 
{ 
    echo "There are no matches for this specific value"; 
} 
+0

Wie Teresko jedoch darauf hinweist, ist es besser, PDO (zum Beispiel) zu verwenden, da vorbereitete Anweisungen eine gute Möglichkeit sind, SQL-Injection zu vermeiden. – Bono

+0

Danke das macht mir viel mehr Sinn, ich werde einen Blick in PDO werfen, obwohl Bono. –

0

Sie können die abgefragten Daten von Zeilen als assoziiertes Array erhalten mit mysql_fetch_array():

$row = 0; 
$data = mysql_query("SELECT name1,name2 FROM ...."); 
while(($result = mysql_fetch_array($data)) !== false) 
{ 
    echo "row = $row, name1 = " . $result["name1"] . ", name2 = " . $result["name2"]; 
    $row ++; 
} 

...oder als ein Objekt mit mysql_fetch_object():

$row = 0; 
$data = mysql_query("SELECT name1,name2 FROM ...."); 
while(($result = mysql_fetch_object($data)) !== false) 
{ 
    echo "row = $row, name1 = $result->name1, name2 = $result->name2"; 
    $row ++; 
} 
0

Ich bin nicht ganz sicher, was Sie wollen, aber ich kann einen wahrscheinlichen Fehler hier sehen: Sie verwenden LIKE in eine Weise, die = bedeutet: um zu LIKE wie ein like zu verhalten zu haben, einige Joker Zeichen benötigen:

$query = "SELECT * FROM `TABLE` WHERE `COLUMN` LIKE '%VAULE%'"; 
$result=mysql_query($query); 

while (false !== ($row = mysql_fetch_assoc($result))) { 
    //here $row is an array containing all the data from your mysql row 
} 
1

Wo zum Teufel yo:

"SELECT * FROM `TABLE` WHERE `COLUMN` LIKE 'VAULE'" // This will return all rows where column='VAUL' 
"SELECT * FROM `TABLE` WHERE `COLUMN` LIKE '%VAULE%'" // This will return all rows where column='%VAUL%' // This will return any row containing 'VAUL' in column 
"SELECT * FROM `TABLE` WHERE `COLUMN` LIKE '%VAULE'" // This will return all rows where column='%VAUL' // this will return all rows ending by VAUL. I guess you get it now :) 

eine die tatsächlichen Ergebnisse abrufen Du hast gelernt, wie man MySQL in PHP benutzt? Die mysql_* Funktionen sind mehr als 10 Jahre alt und nicht mehr gepflegt. Die Gemeinschaft hat bereits damit begonnen, an deprecating them zu arbeiten.

Sie sollten PDO oder MySQLi dafür verwenden.

// connection to database 
$db = new PDO('mysql:host=localhost;dbname=datadump_pwmgr;charset=UTF-8', 
       'datadump_pwmgr', 
       'kzddim05xrgl'); 
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 

// setting up prepared statement for the query 
$statement = $db->prepare('SELECT * FROM table WHERE column LIKE :value'); 
$statement->bindParam(':value', $some_variable, PDO::PARAM_STR, 127); 

// executing query and fetching first result 
if ($statement->execute()) 
{ 
    $data = $statement->fetch(PDO::FETCH_OBJ); 
    var_dump($data); 
} 

Sie Dies sollte wie etwas geben, was man braucht. Allerdings würde ich empfehlen, this tutorial auszuprobieren. Und das Lernen mehr über prepared statements könnte auch nützlich sein.

Auch, wenn Sie mit Objekten arbeiten, dann ist es möglich, eine einzelne DB Connection-Objekt zu erstellen, und an mehrere andere Klassen übergeben, es zu benutzen:

$pdo = new PDO('sqlite::memory:'); 

$a = new Foo($pdo); 
$b = new Bar($pdo, 'something'); 

Auf diese Weise kommt man sowohl die Objekte gleiche Datenbankverbindung, und Sie müssen es nicht erneut initialisieren.

+0

Ich musste irgendwo anfangen, ich bin neu in solchen Sachen und hatte keine Ahnung, was PDO war. Ich habe mysqli ein wenig vorher benutzt, aber in diesem Beispiel nur mysql verwendet. –

+0

Ich suche jetzt nach PDO, da es viel sauberer aussieht! –

1

Ok. Sie werden die Verbindung zur mysql-Datenbank irgendwo behalten wollen. Eine allgemeine Verwendung ist $ Conn.

So würden Sie

$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die("Unable to connect to database"); 

Dann, entweder aus der URL oder Post, oder nur einige Variablen, die Sie in Ihrer PHP-Datei haben sitzen, können Sie die Datenbank abfragen, indem die Variablen in der Abfrage selbst setzen. Hier können Sie auch $ conn verwenden, so dass Sie einen Ort zum Verbinden mit der Datenbank haben, zum Beispiel in einem Include, und Sie müssen nicht die gesamte Verbindungszeichenfolge an jedem Ort eingeben, an dem Sie eine Verbindung zur Datenbank herstellen müssen.

$query = "SELECT * FROM `TABLE` WHERE `COLUMN` LIKE '%" . $varToCompare . "%'"; 
$result=mysql_query($query,$conn); 

Oben verwenden Sie ein Like. Vielleicht möchten Sie nur tun .. Wobei Spalte = $ var.

Dann können Sie PHP verwenden, um durch die Ergebnisse in ein Array (für Abfragen, wo mehrere Zeilen erhalten würden) zu drehen.

+0

Vielen Dank für Ihren Rat Kris :) –

Verwandte Themen