从ARRAY保存SQL数据,例如print_r()

时间:2013-06-15 01:03:35

标签: php mysql sql

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

用户在网站上注册,他像往常一样将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);

我只得到了ID,这就是我现在所需要的......

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

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

但是,我没有看到,只有当我去浏览器时,请耐心地告诉我,我还在学习 所以,此时我有6位数的特殊代码,存储在另一个表中

此代码将与问题相关联,因为代码也与用户相关联... 我的表是: 用户,Special_code,问题,question_for_user

最后我的表格question_for_users应该是这样的

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

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

所以我的问题是,如果数组在print_r($ ids)中,如何将数据保存到数组中的mysql表格中? 或者如果有其他方法可以保存数据,请分享......谢谢。


所以,我感谢大家帮助我,你的一些想法确实独立工作...... 使用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());
}

这就是诀窍...... :) 我按照我想要的方式得到了桌子

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

2 个答案:

答案 0 :(得分:1)

根据评论,似乎问题是填充questions_for_users表。

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

使用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);

答案 1 :(得分: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