1

我有以下问题注册后如何将数组中的数据保存在同一文件中,这是场景。

用户在网站上注册,他像往常一样得到一个 ID 作为 SQL 的主键,还有一个随机代码,在这种情况下是一个随机数,这个数字稍后将被使用,但现在我只需要一个离开来保存我的数据...

因此,当用户第一次注册时,脚本会从 sql 中生成 3 个随机问题,其中表有超过 400 个问题,每个用户只得到 3 个问题。所以

这是我得到这个随机问题的代码......

 $questionsID = mysql_query("SELECT * FROM questions ORDER BY RAND() LIMIT 3");
        $ids = array();
        while($row = mysql_fetch_array($questionsID)){
            $ids[] = $row['id'];
                    }
print_r($ids);

有了它,我只得到了身份证,这就是我现在所需要的......

最终结果是 3 个 ID,正如我在 SQL 查询中所说,我只想要整个表中的 3 个随机 ID,所以它看起来像这样:

    Array
(
    [0] => 2
    [1] => 1
    [2] => 3
)

但是,我没有看到,只有当我去我的浏览器时,请耐心等待我还在学习所以,此时我有我的 6 位数的特殊代码,它存储在不同的表中

此代码将与问题相关联,因为代码也与用户相关联......我的表格是:用户,特殊代码,问题,问题_for_user

最后我的表 questions_for_users 应该是这样的

ID | special_code | question_id
1  | 444444       | 2
2  | 444444       | 1
3  | 444444       | 3
4  | 232323       | 56
5  | 232323       | 4

...每个特殊代码的每个用户都有儿子...

所以我的问题是,如何将我的数据保存到数组中的 sql 表 questions_for_user 中,如果数组在 print_r($ids) 中......或者如果有另一种保存数据的方法,请分享......谢谢你。


所以,我感谢大家对我的帮助,你们的一些想法确实是独立的......使用 jeroen 解决方案确实有效,但是当我将它放入我的完整代码时它停止工作......我从未使用过 serialize(),所以我真的不知道它是如何工作的,但我可以猜到这样的事情:用于在我的 sql 中保存数据

$array_string=mysql_escape_string(serialize($array));

和类似的东西

$array= unserialize($results['ids']);

获取信息......我不知道,我可能是错的......无论如何......

所以我为你即将看到的道歉:我知道这不是最好的方法,一些开发人员会想打我的头!...

为了保存数据,我在预览查询中进行了另一个查询,如下所示:

$questionsID = mysql_query("SELECT * FROM questions ORDER BY RAND() LIMIT 3");
//        $ids = array();
                while($row = mysql_fetch_array($questionsID)){
        $ids = $row['id'];
                mysql_query("INSERT INTO user_questions(special_code, question_id) VALUES ('$specialCode_by_POST','$ids')") or  die("".mysql_error());
}

这成功了...... :) 我得到了我想要的桌子

如果您认为我应该以不同的方式执行此操作,请分享解决方案,谢谢。

4

2 回答 2

1

根据评论,问题似乎在于填充questions_for_users表格。

您可以构建一个简单的插入语句,该语句将一次插入数组中的所有条目。

使用 PDO:

$values = array(':special_code' => $special_code);
$recs = array();
$sql = 'INSERT INTO questions_for_users (ID, special_code, question_id) VALUES ';
foreach ($ids as $id)
{
    $recs[] = "(NULL, :special_code, :question_id_{$id})";
    $values[":question_id_{$id}"] = $id;
}
$sql .= implode(',', $recs);

// prepare statement
$stmt = $db->prepare($sql);

// execute statement
$stmt->execute($values);
于 2013-06-15T01:44:58.983 回答
0

您可以where IN id(2,1,3)用于问题表或连接表

    $query = "SELECT questions.id, Special_code.code FROM questions, Special_code  
WHERE questions.id = Special_code.id ORDER BY RAND() LIMIT 3";

http://www.w3schools.com/sql/sql_join.asp

于 2013-06-15T01:19:37.260 回答