[英]MySQL and PHP, Comparing two tables, getting the date, and assigning values
[英]Mysql Query, comparing values and assigning to PHP variables
盡管我什么都沒找到,但我對我想做的事情做了相當多的研究。 我不太確定我是否正在尋找正確的東西:(我對PHP和MySQL語法還是有點陌生,所以請客氣。
我希望按以下順序執行以下操作:
我已經通過以下方式建立了到數據庫的連接:
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年以上,並且不再維護。 社區已經開始致力於棄用它們 。
// 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.