Php 通过字符串变量实现MySQL查询的PDO

Php 通过字符串变量实现MySQL查询的PDO,php,mysql,Php,Mysql,我将此代码用于我的学校项目,在该项目中,我的程序应该能够自动回复使用开源程序发送给它的查询 我已经成功地创建了一个简单的自动回复与它的帮助下,有人谁是它的知识。然而,我很难通过带有字符串变量的PHP MySQL获取值 $reqproduct = $db->query("SELECT Crop FROM crops WHERE Crop = '$product'"); $reqprice = $db->query("SELECT Price FROM crops WHERE Crop

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

我已经成功地创建了一个简单的自动回复与它的帮助下,有人谁是它的知识。然而,我很难通过带有字符串变量的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”、“作物”和“价格”。

您在这里做错了几件事

首先,SQL可以一次绘制几个列,因此它应该进入一个查询,如下所示:

$crop = $row['Crop'];
$price = $row['Price'];
从作物中选择作物,作物价格='product'

然后,当您执行mysql获取时,您可以像下面这样从行中获取值:

$crop = $row['Crop'];
$price = $row['Price'];
每列映射到数组中的一个元素。要查看它的外观,请尝试:

var_dump($row)在调用fetchAll之后


请参阅此处的获取助理:

再次获得其他帮助,以下是更好的代码。:)


您的pdo字符串中应该有一个用户和密码,我只看到用户。要帮助您理解
$row
$result
的内容,请使用
var\u dump($result)
变量转储($row)第一个是包含第二个的二维数组。因此,您需要通过数组索引检索值
Crop
<代码>$reqprice=$row['Crop']否则,您的代码相当不错。我建议在像
foreach
这样的控制结构中使用缩进而不是内联
{}
块,并且当您只需要变量
$product
@Mihai时,不要使用
“{$product}”
:它仍然连接,但我没有更改phpmyadmin:)@Mihai的默认传递密码参数是可选的。MySQL支持无密码连接是的,我的错。我只是在发布问题时复制粘贴了reqprice部分。另外,“WHERE Crop='product'”部分将只查询字符串本身,而不是变量,这也是我在讨论问题PHP:PDO之前遇到的问题;通过单击向下箭头下的轮廓复选标记来执行此操作。我正在编辑你的标题,因为[已解决]不应该在那里。