我在我的学校项目中使用此代码,我的程序应该能够自动回复使用开源程序发送给它的查询。
我已经成功地在熟悉它的人的帮助下创建了一个简单的自动回复。但是我正在努力通过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'。
答案 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";