Php PDO中的操作数替换
继承了我所在组织的一个附属网站,直到我们能够找到一名Web开发人员。最初,我们不得不将整个PHP网站从MySQL_uu语句转换为PDO。做完作业后,我在这方面取得了很大的成功,但现在可以说有些“机制”出现了故障。下面的例子就是这样一个例子。我知道array()/4是一个非法操作,但我找不到其他方法来完成此功能。这对我来说可能是一个学习上的差距,但我也猜这个函数并没有真正按照设计的方式使用。如有任何意见,将不胜感激,谢谢Php PDO中的操作数替换,php,mysql,arrays,pdo,Php,Mysql,Arrays,Pdo,继承了我所在组织的一个附属网站,直到我们能够找到一名Web开发人员。最初,我们不得不将整个PHP网站从MySQL_uu语句转换为PDO。做完作业后,我在这方面取得了很大的成功,但现在可以说有些“机制”出现了故障。下面的例子就是这样一个例子。我知道array()/4是一个非法操作,但我找不到其他方法来完成此功能。这对我来说可能是一个学习上的差距,但我也猜这个函数并没有真正按照设计的方式使用。如有任何意见,将不胜感激,谢谢 $result = $dbh->query($category); i
$result = $dbh->query($category);
if ($dbh = $result->rowCount(1)){
$cols=4;
$rows = $result->fetch(PDO::FETCH_ASSOC);
$rows = $rows/$cols;
$extrarows=$cols-$rows;
$extrarows=substr($extrarows,0,1);
for ($i=0; $i<$rows; $i++) {
echo ("<tr>");
for ($j=0; $j<$cols;$j++){
//$rowdata=mysql_fetch_row($result);
$rowdata = $result->fetch(PDO::FETCH_ASSOC);
echo ("<td valign=\"top\" align=\"center\" width=\"20%\">\n");
if ($rowdata!=""){
事实证明,对于每个$result->fetch,我都必须稍微更改我的PDO语句。我的初始部分是正确的,但需要省略FETCH_ASSOC。示例如下:
$result->fetch(PDO::fetch\u ASSOC)
太
$rows=$result->fetch()
您仍然需要从返回的$result->fetch(PDO::fetch_ASSOC)
中解包一个数组项<代码>$rows[“count”]或其他。它应该在那里计算什么?$rows
将是一行数据。您需要$result->rowCount()
来获取整个结果集中的行数。或者您可以执行$rows=count($rows)/$cols代码>也许你应该全部重写。如果它只是为了输出一个图像网格,那么foreach(array\u chunk($result->fetchAll(),4)作为$4行){
可能已经可以了。还可以将一些东西包装到函数中。否则这将无法继续维护。@jaredquarece哪个偏移量未定义?这些索引之一(2,5,6,10)未设置。请检查数据并查看返回的内容。
if ($e!=""){
$page="SELECT galleryid from gallery where (year='$year' and event='$e') order by sortorder ASC;";
}elseif ($k!=""){
$page="SELECT galleryid from gallery where (year='$year' and keyword='$k') order by sortorder ASC;";
}else{
$page="SELECT galleryid from gallery where year='$year' order by sortorder ASC;";
}
$resultnext = $dbh->query($page);
$array=array();
while($rownext = $resultnext->fetch(PDO::FETCH_ASSOC)) {
$newid=$rownext["galleryid"];
$image=$rownext["imagetitle"];
array_push($array,$newid);
}
$id=$_GET['id'];
$key=array_search($id,$array);
$first=array_slice($array,0,1);
$first=$first[0];
$last=array_slice($array,-1,1);
$last=$last[0];
$previous=array_slice($array,$key-1,1);
$previous=$previous[0];
$current=array_slice($array,$key,1);
$current=$current[0];
$next=array_slice($array,$key+1,1);
$next=$next[0];