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,我不知道,但我尝试了第二个,但它仍然没有显示任何数据aIsPDO::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