使用php从postgresql中检索数据,并将值存储在一个变量中


retrieve data from postgresql with php and stored the value in a variable

我正在尝试下面的代码,用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);