首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试切换到pdo,随机图像脚本并不总是触发

尝试切换到pdo,随机图像脚本并不总是触发
EN

Stack Overflow用户
提问于 2012-11-20 02:01:24
回答 1查看 99关注 0票数 0

我正在试着切换到PDO。虽然我很快就遇到了一些问题,但有一个问题我还没能解决,那就是我的随机图像脚本。我之前有一篇关于这个不工作的帖子,它与SELECT MAX(id) needed to be SELECT MAX(id-6)有关。之前的问题是,我得到的是随机数的图像,而不是6张。

现在的问题是,有时我会得到六个随机的图像,有时我什么也得不到。我希望有人能看看我的脚本,看看他们是否能发现它的任何问题。

感谢有时第二双眼睛就足够了:

代码语言:javascript
复制
<?php
$passed_cat = mysql_real_escape_string($_GET['cat']);
$passed_sub_cat = mysql_real_escape_string($_GET['sub_cat']);

include ('../../connection.php');

$related_images = "SELECT *,r1.id as main_id 
                   FROM images AS r1 
                   JOIN 
                   (
                        SELECT ROUND(RAND() * (SELECT MAX(id-6) 
                                               FROM images)) AS id
                    ) AS r2 
                    WHERE r1.id >= r2.id 
                        AND public_approved='Approved'
                        AND category = :category
                        AND sub_category = :sub_category
                    ORDER BY r1.id ASC 
                        LIMIT 6
                            OFFSET 20";

$q = $conn->prepare($related_images);
$q->execute(array(
':category' => $passed_cat,
':sub_category' => $passed_sub_cat));


if(!$q)
{
    die("Query failed due to: ". $conn->errorInfo());
}

$q->setFetchMode(PDO::FETCH_BOTH);

while($row = $q->fetch())
{
echo "<div style='float:left; margin:2px;' >";
echo '<a href="sub_page.php?cat='. $passed_cat .'&sub_cat='. $passed_sub_cat .'&id='. $row['main_id'] .'"><img src="../../files/small/thumb0_'. $row['item_name'] . '.' . $row['file_extension'] . '" style="width:96px;" border="0"></a>';
echo "</div>";
}
?>

编辑: Connection.php

代码语言:javascript
复制
<?php

    $host = "localhost"; 
    $dbname = "all_sites";
    $db_username = "root";
    $db_password = "password";

try {
    $conn = new PDO("mysql:host=$host;dbname=$dbname",$db_username,$db_password);
}
catch (PDOException $pe)
{
    die('Connection error, due to: ' .$pe->GetMessage());
}
?>
EN

回答 1

Stack Overflow用户

发布于 2012-11-20 02:26:27

如果不使用mysql_connect(),则mysql_real_escape_string()不是必需的,并且可能会导致问题

From the manual: mysql_real_escape_string('',*link_identifier)

  • MySQL连接。如果未指定链接标识符,则假定使用mysql_connect()打开的最后一个链接。如果找不到这样的链接,它将尝试创建一个链接,就好像调用mysql_connect()时没有参数一样。如果未找到或未建立连接,则会生成E_WARNING级错误。

只需将您的$_GET变量传递给execute数组:

代码语言:javascript
复制
$q->execute(array(':category'=>$_GET['cat'], ':sub_category'=>$_GET['sub_cat']));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13459475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档