Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用if station&;获取记录;php函数中的pdo查询_Php_Mysql_Pdo - Fatal编程技术网

使用if station&;获取记录;php函数中的pdo查询

使用if station&;获取记录;php函数中的pdo查询,php,mysql,pdo,Php,Mysql,Pdo,我对函数pdo有问题,当它从数据库中获取1条记录时,结果为空 connect.php <?php class dbConn{ protected static $db; private function __construct() { try { self::$db = new PDO( 'mysql:host=localhost;dbname=item', 'root', '' ); self::$d

我对函数pdo有问题,当它从数据库中获取1条记录时,结果为空

connect.php

<?php

class dbConn{

    protected static $db;

    private function __construct() {

        try {
            self::$db = new PDO( 'mysql:host=localhost;dbname=item', 'root', '' );
            self::$db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
        }
        catch (PDOException $e) {
            echo "Connection Error " . $e->getMessage();
        }

    }

    public static function getConnection() {

        if (!self::$db) {
            new dbConn();
        }

        return self::$db;
    }

}
?>

function.php

<?php
include 'connect.php';
class ajax_table {

    function detailitem($table){
        $db = dbConn::getConnection();
        $sql = "select * from ".$table."" or die(mysql_error());
        $q = $db->query($sql) or die("failed!");
        $res = $q->fetch(PDO::FETCH_ASSOC);
        return $res;
        //else echo "No records found";
    }     
}
?>

展示

displayitem.php

<?php
$url = $_GET['url'];
$url=$url.'.html';

include 'connect.php';
include 'function.php';
$db = dbConn::getConnection();
$obj = new ajax_table();
$records = $obj->detailitem('product WHERE url = "$url"');
if($records){
    echo $records['name'];
    echo '<br>';
    echo $records['type'];
}else{
    echo 'no result';
 } ?>

如果您在下一行正确看到:

$records = $obj->detailitem('product WHERE url = "$url"');
它将字符串作为“$url”传递,而不是
$url
变量的值

因此,将其更改为:

$records = $obj->detailitem('product WHERE url = \''.$url.'\'');

为什么字符串赋值中有
或die()
,为什么在使用PDO时调用
mysql_error()
?第一个脚本名为
connection.php
,但包括
connect.php
。第二个sript名为
t_function.php
,但包括
function.php
。你确定你有所有正确的文件吗?barmar:很抱歉拼写错误,但我的调用文件是正确的,我改进了写作。为什么要使用or die()和调用mysql\u error,因为我太困惑了,而且我是新使用的PDO@RiskiFebriansyah变量在双引号内展开,但不在单引号内展开。您的另一个选择可能使用了双引号。感谢barmar和Fev,这是成功的,但我现在发现了致命错误“致命错误:未捕获异常'PDOException',消息'SQLSTATE[42S22]:Column not found:1054 line function.php$res=$q->fetch(PDO::fetch_ASSOC)中的'where子句'中的未知列'shoes';其中url的实际值为“/1234/shoes-small.html”。这表示“shoes”列“您的表中不存在..,您可以通过在mysql终端中键入
DESC yourTableName
来检查该列是否存在。是的,在我的数据库表中没有列‘shoes’,‘shoes’是url列中的记录。accutaly'/1234/shoes small.html'@RiskiFebriansyah听起来好像你没有引用URL,所以它将
shoes
作为列名而不是字符串。