Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.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
Php Pdo select语句不显示数据库中的数据_Php_Mysql_Pdo - Fatal编程技术网

Php Pdo select语句不显示数据库中的数据

Php Pdo select语句不显示数据库中的数据,php,mysql,pdo,Php,Mysql,Pdo,我想在“我的地址”列中显示数据,但它不显示任何内容,也不显示错误。我不知道代码出了什么问题 <?php $localhost ="localhost"; $username = "root"; $password = ""; $dbname = "sbnhs"; try { $db = new PDO("mysql:host=$localhost;dbname:$dbname", $username, $password); $db->setAttribute(PDO

我想在“我的地址”列中显示数据,但它不显示任何内容,也不显示错误。我不知道代码出了什么问题

<?php
$localhost ="localhost";
$username = "root";
$password = "";
$dbname = "sbnhs";
try {
    $db = new PDO("mysql:host=$localhost;dbname:$dbname", $username, $password);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    // echo "Success";
    $x = 0128;
    $sql = $db->prepare("SELECT * FROM $dbname.refcitymun WHERE provCode = :provcode");
    $sql->bindValue(':provcode', $x);
    if($sql->execute()) {
        while($result = $sql->fetch()){
            $desc = $result['citymunDesc']; 
            echo $desc;
        }   
    }else {
        echo 'Query Error';
    }
}catch (PDOException $e) {
    print 'Error: ' . $e->getMessage() . '</br>';
    die();
}   

?>

但当我尝试上面的格式时,它会显示我想要的数据。但我需要在语句中使用变量。请检查第一个代码有什么问题

请在
bindValue
中提供第三个参数(适当的数据类型):

更改以下行:

<?php
$localhost ="localhost";
$username = "root";
$password = "";
$dbname = "sbnhs";
try {
    $db = new PDO("mysql:host=$localhost;dbname:$dbname", $username, $password);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    // echo "Success";
    // $x = 0128;
    $sql = $db->prepare("SELECT * FROM $dbname.refcitymun WHERE provCode = 0128");
    // $sql->bindValue(':provcode', $x);
    if($sql->execute()) {
        while($result = $sql->fetch()){
            $desc = $result['citymunDesc']; 
            echo $desc;
        }   
    }else {
        echo 'Query Error';
    }
}catch (PDOException $e) {
    print 'Error: ' . $e->getMessage() . '</br>';
    die();
}   

?>


0128
是八进制表示法,它是十进制中不同的数字。
$x=0128
应该会出错,因为它甚至不是一个有效的八进制数(尽管较旧的版本会自动将其截断为
012
,请参阅(有关详细信息)@你对如何解决这个问题有什么建议吗?我需要把八进制转换成十进制吗?@Mureinik ahhh,我不知道,但我尝试了第二个,但它仍然没有显示任何数据aIs
PDO::PARAM_STR
it working?我将变量的类型更改为string,它可以解决我想要的所有问题。我太笨了。顺便说一句,谢谢大家。这就是为什么我提到一条评论“如果你的provcode是int类型,那么这将有效,请提供适当的数据类型”,因为我不知道八进制符号。谢谢你的帮助
$sql->bindValue(':provcode', $x);
$sql->bindValue(':provcode', $x, PDO::PARAM_STR);// This will work if your provcode is of type int, provide appropriate datatype