簡體   English   中英

Mysql查詢,比較值並分配給PHP變量

[英]Mysql Query, comparing values and assigning to PHP variables

盡管我什么都沒找到,但我對我想做的事情做了相當多的研究。 我不太確定我是否正在尋找正確的東西:(我對PHP和MySQL語法還是有點陌生​​,所以請客氣。

我希望按以下順序執行以下操作:

  1. 連接到數據庫(完成)
  2. 查詢特定的字符串(我想我完成了)從這里開始有點模糊:(
  3. 如果找到匹配的變量,則復制​​整行(我需要其他變量)。
  4. 將SQL查詢中的值分配給PHP變量。
  5. 從那里我將繼續下去。

我已經通過以下方式建立了到數據庫的連接:

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

然后調用函數connect();

然后,我希望在數據庫中查詢一個特定的值,由於這個參數,我將使用一個靜態值。 這就是我所擁有的:

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

從這里我不太確定如何比較查詢結果以查看是否匹配(類似於mysql行?)。 如果有匹配項,那么我想獲取整行,並將每個值分配給一個php變量。

我不是要你為我做,只是我朝正確的方向踢應該沒問題!

希望它能解釋得足夠:)

多謝您的指導

您到底在哪里學習了如何在PHP中使用MySQL? mysql_*函數已使用10年以上,並且不再維護。 社區已經開始致力於棄用它們

您應該為此使用PDOMySQLi

// 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 );
}

這應該為您提供所需的東西。 不過,我建議您嘗試本教程 學習更多有關預備語句的信息也可能很有用。

同樣,如果您使用的是對象,則可以創建單個DB連接對象,並將其傳遞給其他多個類以使用它:

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

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

這樣,您就可以將兩個對象傳遞給同一數據庫連接,而無需重新初始化它。

好。 您將需要保持與mysql數據庫的連接。 常見用法是$ conn。

所以你會

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

然后,從URL或Post,或者只是位於php文件中的一些變量,就可以通過將變量放在查詢本身中來查詢數據庫。 另外,在這里您可以使用$ conn,以便在一個位置(例如,在include中)連接數據庫,而不必在需要連接到數據庫的每個位置上都放置所有連接字符串。

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

上面你用的是贊。 您可能只想看做..其中column = $ var。

然后,您可以使用php將結果旋轉到一個數組中(用於查詢將獲得多行的查詢)。

我認為您正在尋找這樣的東西:

$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";
}

您可以使用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 ++;
}

...或使用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 ++;
}

我不太確定自己想要什么,但是我在這里看到一個可能的錯誤:您正在使用LIKE ,即= :為了使LIKE表現得像like ,您需要一些小丑字符:

"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 :)

檢索實際結果:

$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
}

嘗試在另一個頁面中編寫數據庫連接,而無需使用功能,並將該頁面包括在您需要的任何位置。

ex: require_once 'dbConnect.php';

dbConnect.php包含:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM