MySQL上的PDO通过String变量查询

时间:2014-01-19 13:41:16

标签: php mysql

我在我的学校项目中使用此代码,我的程序应该能够自动回复使用开源程序发送给它的查询。

我已经成功地在熟悉它的人的帮助下创建了一个简单的自动回复。但是我正在努力通过PHP-MySQL使用字符串变量来获取值。

$reqproduct = $db->query("SELECT Crop FROM crops WHERE Crop = '$product'");
$reqprice = $db->query("SELECT Price FROM crops WHERE Crop = '$product'");  

当然,是的,我已经失败了。

然后我尝试学习PHP:PDO,但即使借助其文档,我仍然不知道如何使用它的命令。

以下是我正在尝试做的摘录:

<?php
    try{
    //test database connection
    $db = new PDO('mysql:host=localhost;dbname=gammu;','root'); 
    echo "Connected<p>";} 
    catch (Exception $e){echo "Unable to connect: " . $e->getMessage() ."<p>";} 

    //get data from database through decoded message
        $product = 'Okra'; //sample decoded message

        $sth = $db->prepare('SELECT Crop FROM crops WHERE Crop = :product'); 
        $sth->execute(array(':product' => "{$product}"));
        $result = $sth->fetchAll();
        foreach ($result as $row) { $reqproduct = $row; break;}
        $sth = $db->prepare('SELECT Price FROM crops WHERE Crop = :product'); 
        $sth->execute(array(':product' => "{$product}"));
        $result = $sth->fetchAll();
        foreach ($result as $row) { $reqprice = $row; break;}

    //to be sent to the sender
        $message = "The price of $reqproduct is $reqprice/kilo." ;
        echo $message;
    $db = null;
?>

我想获得$ message中的内容的价值,任何帮助都会非常感激。

此外,crops.sql包含3列。即'ID','Crop'和'Price'。

2 个答案:

答案 0 :(得分:1)

你在这里犯了一些错误。

首先,SQL可以一次写几列,所以它应该进入这样的一个查询:

SELECT Crop, Price FROM crops WHERE Crop = 'product'

然后,当你执行mysql fetch时,可以像这样从行中获取值:

$crop = $row['Crop'];
$price = $row['Price'];

每列都映射到数组中的元素。要查看它的外观,请尝试:

致电fetchAll后

var_dump($row);

请在此处查看FETCH_ASSOC:http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/

答案 1 :(得分:0)

再次获得另一个帮助,这是更好的代码。 :)

    $crop_query = $db->query("SELECT Crop, Price FROM crops WHERE Crop = '{$product}' ");
    $crop_query->execute(array(':product' => "{$product}"));
    $result = $crop_query->fetch(PDO::FETCH_OBJ); //just fetch one row

    $message = "The price of {$result->Crop} is {$result->Price}/kilo";