我对我想做的事做了一些研究,虽然我没有找到任何东西。我不太确定我是否正在寻找合适的东西:(我对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变量。
我不是要求你为我做这件事,只要我朝正确的方向开展就应该没事!
希望它足以解释:)
感谢您的善意指导
答案 0 :(得分:1)
你到底在哪里学习如何在PHP中使用MySQL? mysql_*
函数已超过10年,不再维护。社区已经开始研究deprecating them。
// 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 );
}
这应该给你一些你需要的东西。不过,我建议尝试this tutorial。了解prepared statements的更多信息也很有用。
此外,如果您正在使用对象,则可以创建单个数据库连接对象,并将其传递给多个其他类以使用它:
$pdo = new PDO('sqlite::memory:');
$a = new Foo( $pdo );
$b = new Bar( $pdo, 'something');
这样,您可以将两个对象都传递给相同的数据库连接,而无需重新初始化它。
答案 1 :(得分:1)
确定。您将希望在某处保持与mysql数据库的连接。常见的用途是$ conn。
所以你会有
$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die("Unable to connect to database");
然后,无论是来自URL还是Post,或者只是您在php文件中的一些变量,您都可以通过将变量放入查询本身来查询数据库。此外,在这里你可以使用$ conn,这样你就有了一个地方可以连接到数据库,例如,包含你需要连接到数据库的每个地方的所有连接字符串。
$query = "SELECT * FROM `TABLE` WHERE `COLUMN` LIKE '%" . $varToCompare . "%'";
$result=mysql_query($query,$conn);
上面你正在使用像。你可能只想看看......其中column = $ var。
然后你可以使用php将结果旋转到一个数组中(对于可以获得多行的查询)。
答案 2 :(得分:0)
我认为你正在寻找这样的东西:
$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";
}
答案 3 :(得分:0)
您可以使用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 ++;
}
答案 4 :(得分:0)
我不太确定你想要什么,但我可以在这里看到一个可能的错误:你正在以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
}
答案 5 :(得分:-1)
尝试在另一个页面中编写数据库连接,无需使用函数,并将该页面包含在您需要的位置。
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");
?>