我正在尝试下面的代码,用php从postgresql中检索数据,并将值存储在一个变量中。
我有一个名为:Menu的表,其中有三列名为:名称、评级和数量。
其中一项记录是:name=Pasta额定值=4次数=3
我想取回额定值=4次数=3
并将这些数字存储在两个变量中:value和value2以使用这些值。
这是我尝试过的,但它没有打印值,所以我做错了什么,不知道它是什么。
如有任何帮助,我们将不胜感激。
谢谢
<?php
$db = pg_connect('host=localhost dbname=test user=myuser password=mypass');
$query = "SELECT rating, numofratings FROM menu where name = 'Pasta'";
$result = pg_query($query);
if (!$result) {
echo "Problem with query " . $query . "<br/>";
echo pg_last_error();
exit();
}
$myrow = pg_fetch_assoc($result);
$value == $myrow[rating];
$value2 == $myrow[numofratings];
echo "$value, $value2";
?>
==
是相等检查运算符。要给变量赋值,应该使用=
运算符:
$value = $myrow[rating];
$value2 = $myrow[numofratings];
应该是
$myrow = pg_fetch_assoc($result);
$value = $myrow[rating];
$value2 = $myrow[numofratings];
您使用的是==,这不是赋值,而是比较。所以你的代码基本上是在做
$myrow = pg_fetch_assoc($result);
false;
false;
print ", ";
因为这两个变量实际上从未被赋值,甚至根本不存在。
尝试使用PDO准备的语句
$sql = "SELECT rating, numofratings FROM menu where name = :name";
$pdo = new PDO('pgsql:dbname=mydb;host=localhost;user=myuser;password=mypass');
if ($con = $pdo->prepare($sql)) {
$con->execute([
':name'=>'Pasta'
]);
$r = $con->fetch(PDO::FETCH_ASSOC);
if(!empty($r)){
$val1 = $r['rating'];
$val2 = $r['numofratings'];
}
}
您将希望在['rating']
和['numofratings']
之间加引号,因为如果不加引号,PHP将抛出一个合适的值。
试着打印出错误,看看你的代码出了什么问题。
//At the top of the php page
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);