Php 帮助将此mysql查询转换为PDO查询
我已经使用它一段时间了,但是从那以后我升级到PDO而不是mysql查询。但我似乎根本无法让这个特殊的片段发挥作用Php 帮助将此mysql查询转换为PDO查询,php,pdo,Php,Pdo,我已经使用它一段时间了,但是从那以后我升级到PDO而不是mysql查询。但我似乎根本无法让这个特殊的片段发挥作用 $query = mysql_query ($sql) or die (mysql_error()); while ($records = @mysql_fetch_array ($query)) { $alpha[$records['alpha']] += 1; ${$records['alpha']}[$records['id_clients']] = array
$query = mysql_query ($sql) or die (mysql_error());
while ($records = @mysql_fetch_array ($query)) {
$alpha[$records['alpha']] += 1;
${$records['alpha']}[$records['id_clients']] = array(
$records['first_name'], //item[0]
);
}
我试过这个
while ($records = $this->db->fetch_row_assoc($sql)) {
$alpha[$records['alpha']] += 1;
${$records['alpha']}[$records['id_clients']] = array(
$records['first_name'], //item[0]
);
}
我的PDO代码是
public function query($statement)
{
return self::$PDO->query($statement);
}
public function fetch_row_assoc($statement) {
self::$PDO->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
try
{
$stmt = self::$PDO->query($statement);
$result = $stmt->fetch();
return $result;
}catch(PDOException $e){
echo $e->getMessage();
}
return false;
//return self::$PDO->query($statement)->fetch(PDO::FETCH_ASSOC);
}
查询函数可以工作,但是我引入了fetch\u row\u assoc函数,希望我可以用mysql\u fetch\u asso做同样的事情
$sql = "SELECT
SUBSTRING(`last_name`, 1, 1) AS alpha,
SUBSTRING(`middle_name`, 1, 1) AS subMiddleName,
`id_clients`,
`type`,
`first_name`,
`middle_name`,
`last_name`,
`address`,
`primary_number`,
`secondary_number`,
`home_number`,
`office_number`,
`cell_number`,
`fax_number`,
`ext_number`,
`other_number`,
`comments`
FROM `clients`
WHERE `user_id` = 1
AND `is_sub` = 0
AND `prospect` = 1
ORDER BY `last_name`";
试试这个:
public function query($statement)
{
return self::$PDO->query($statement);
}
public function fetch_row_assoc($statement) {
self::$PDO->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
try
{
$stmt = self::$PDO->query($statement);
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$result = $stmt->fetch();
return $result;
}catch(PDOException $e){
echo $e->getMessage();
}
return false;
}
我的问题是,执行查询需要60秒以上的时间,并且在我的服务器上超时,出现错误消息:致命错误:第115行的/var/www/vhosts/foo.bar/httpdocs/library/classes/database.class.php中超过了60秒的最长执行时间。您可以发布实际的查询吗?我不认为超时是因为PHP代码造成的。查询看起来是正常的。我将继续调查,尝试用一个非常简单的SQL查询调用fetch_row_assoc方法,如
select1 AS foobar
并查看它是否工作正常。如果是这样,那么这个方法是正确的,问题就出在其他地方。如果超过60秒的执行时间是因为PHP代码,我会非常惊讶。事实上,让我更新一下我发现的内容,它指向执行需要很长时间的这行代码:$alpha[$records['alpha']]+=1;我确实简化了我的查询,看看是否是这样。但是现在,在只选择了3个字段之后,我就能够得到这个错误