我正在从NetTuts学习PDO,并且到目前为止已经成功地根据字符串搜索FETCH_ASSOC。
问题:为了按整数搜索需要哪个PDO::
?我以为是PDO::Fetch_OBJ
。以下是返回false。
$busid = $this->sanitize($string);
$database->query('SELECT name, address FROM business_information WHERE id = :id', array(':id' => $busid));
var_dump($database);
if($database->count() >= '1') {
$results->setFetchMode(PDO::FETCH_OBJ);
while($row = $results->fetch()) {
$test = "Name: ".$row['name']." Address: ".$row['address'];
}else{
$test = "no results were found";
}
var_dump返回:
object(database)#1(7){[“pdo”:“database”:private] =>对象(PDO)#2(0) {} [“port”] => int(3306)[“statement”] =>对象(PDOStatement)#6(1){ [ “的queryString”] => string(61)“SELECT name,address FROM business_information WHERE id =:id“}}
答案 0 :(得分:0)
您可能需要prepare
一个语句,然后再将其发送到数据库。为什么?答案就在PDO::prepare附近。当您使用prepare
时,您会发现自己持有PDOStatement
作为返回值。
奥基。允许将值绑定到占位符:PDOStatement::bindValue
看一下签名:
`bool PDOStatement::bindValue(mixed $parameter,
mixed $value
[,int $data_type=PDO::PARAM_STR])`
data_type
:使用PDO :: PARAM_ *常量的参数的显式数据类型。
您可以手动设置data_type
,但在99%的时间内都不需要。 (正如我发现的那样。)
答案 1 :(得分:0)
1)准备好的陈述比消毒更好 2)PDO :: query有另一个签名,请阅读手册。
/** @var \PDO $PDO */
$query = $PDO->prepare('SELECT name, address FROM business_information WHERE id = :id');
if (!$query) return false;
if (!$query->execute(array(':id' => $busid))) return false;
$results = $query->fetchAll(\PDO::FETCH_ASSOC);
if (empty($results)) return false;
foreach ($results as $row)
{
$test = "Name: ".$row['name']." Address: ".$row['address'];
echo $test, PHP_EOL;
}