Mysql Query,比较值并分配给PHP变量

时间:2012-03-29 12:07:33

标签: php mysql string-comparison

我对我想做的事做了一些研究,虽然我没有找到任何东西。我不太确定我是否正在寻找合适的东西:(我对PHP和MySQL语法也有点新意,所以请善待。

我希望按此顺序执行以下操作:

  1. 连接数据库(完成)
  2. 查询特定字符串(我想我已完成) 从这里变得有点模糊:(
  3. 如果找到变量的匹配项,请复制整行(我需要其他变量)。
  4. 将SQL查询中的值分配给PHP变量。
  5. 从那里开始我将是正确的。
  6. 我已使用以下内容建立了与数据库的连接:

    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变量。

    我不是要求你为我做这件事,只要我朝正确的方向开展就应该没事!

    希望它足以解释:)

    感谢您的善意指导

6 个答案:

答案 0 :(得分:1)

你到底在哪里学习如何在PHP中使用MySQL? mysql_*函数已超过10年,不再维护。社区已经开始研究deprecating them

您应该使用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 );
}

这应该给你一些你需要的东西。不过,我建议尝试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");
?>