Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从表中获取所有特定结果,并将其存储到数组中_Php_Mysql - Fatal编程技术网

Php 从表中获取所有特定结果,并将其存储到数组中

Php 从表中获取所有特定结果,并将其存储到数组中,php,mysql,Php,Mysql,你好,我不确定是否已经有人问过了,但我已经在谷歌上搜索了20分钟,找不到相关的答案 我正在尝试获取表中的所有线程id,然后将它们存储到名为$ids[]的数组中 然后进行查询: SELECT * FROM posts WHERE tid = $ids[] 基本上,我想获取所有的帖子,它们的tid列就是数组中的一个 我该怎么做 顺便说一下,我正在使用PDO 致命错误:未捕获异常“PDOException”,消息为“SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;检

你好,我不确定是否已经有人问过了,但我已经在谷歌上搜索了20分钟,找不到相关的答案

我正在尝试获取表中的所有线程id,然后将它们存储到名为$ids[]的数组中

然后进行查询:

SELECT * FROM posts WHERE tid = $ids[]
基本上,我想获取所有的帖子,它们的tid列就是数组中的一个

我该怎么做

顺便说一下,我正在使用PDO

致命错误:未捕获异常“PDOException”,消息为“SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,了解在C:\xampp\htdocs\bronified\index.php:77堆栈跟踪:0 C:\xampp\htdocs\bronified\index.php77:PDOStatement->executeArray 1{main}在C:\xampp\htdocs\bronified\index.php第77行中抛出的接近2,3,4,1'的语法

                <?php
                $test = $pdo->prepare("SELECT * FROM mybb_threads ORDER BY replies DESC LIMIT 10");
                $test->execute();

                while ($row = $test->fetch(PDO::FETCH_ASSOC))
                {
                    echo'<li><a href="#st-'.$row['tid'].'-'.$row['fid'].'">'. $row['subject'].'</a></li>';
                }   
                $get = $pdo->prepare("SELECT * FROM mybb_threads ORDER BY replies DESC LIMIT 10");
                $get->execute();                    
                $array = $get->fetchAll(PDO::FETCH_COLUMN, 0);
                ?>
            </ul>
            <?php
                $test = $pdo->prepare("SELECT * FROM mybb_threads ORDER BY replies DESC");
                $test->execute();

                $fetch = $test->fetch(PDO::FETCH_ASSOC);

                $new = $pdo->prepare("SELECT * FROM mybb_posts WHERE replyto = 0 AND tid IN :ids ORDER BY pid ASC LIMIT 10");
                $new->execute(array(":ids" => implode(" , ",$array)));

                while ($row = $new->fetch(PDO::FETCH_ASSOC))
                {
                    echo 
                    '
                        <div id="st-'.$row['tid'].'-'.$row['fid'].'">
                            <h4>'.$row['subject'].'</h4>
                            <p>
                                '.$row['message'].'
                            </p>
                        </div>
                    ';
                }
            ?>
在爆炸和内爆中使用

$idsStr = implode(',', $tids);
$sql = "SELECT * FROM posts WHERE tid IN ($idsStr)";
编辑:假设您知道这些ID是INT,并且没有在其中使用任何其他准备好的语句功能,那么这种方法比将其设置为准备好的语句更容易。如果你真的想做一个事先准备好的陈述,那么:

$idsStr = "";
foreach($tids AS $id){
    $idsStr .= "?, ";
}
$idsStr = trim($idsStr, ', ');
$sql = "SELECT * FROM posts WHERE tid IN ($idsStr)";
$sth = $dbh->prepare($sql);
foreach($tids AS $k=>$id){
    $sth->bindParam($k, $id, PDO::PARAM_INT);
}
Edit2:听起来你只是需要加入。您说过要从表中选择所有线程ID:

SELECT * FROM posts INNER JOIN threads ON threads.thread_id = posts.thread_id
内爆将PHP数组转换为包含由逗号分隔的ID的字符串。
您只需执行查询。

fetch\u array-返回一个数组,该数组对应于使用MYSQLI\u获取的行键->值

$row = $result->fetch_array(MYSQLI_BOTH);
$ids = implode(',',$row['id']);
$sql = "SELECT * FROM posts WHERE tid IN ($ids)"

阵列从哪里来?Mysql还是PHP脚本?在你的新代码中,$array是未定义的。很抱歉,现在添加了完整的代码。如何将所有结果插入数组?重新阅读后,听起来你只需要学习如何进行连接-如果你想选择所有具有线程id的帖子,只需对线程进行内部连接即可。你有没有没有没有线程id的帖子?我需要的是,我正在构建一个线程id数组,然后发送一个查询来选择数组中包含任何线程id的所有帖子。请检查我的编辑,包括错误和代码。听起来您可能没有意识到数组是在构建记录集时创建的。您仍然有$array未定义,代码太多,需要使用联接。我出去了。
$row = $result->fetch_array(MYSQLI_BOTH);
$ids = implode(',',$row['id']);
$sql = "SELECT * FROM posts WHERE tid IN ($ids)"