我有以下问题 注册后如何在同一文件中保存数组中的数据,这是方案。
用户在网站上注册,他像往常一样将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());
}
这就是诀窍...... :) 我按照我想要的方式得到了桌子
如果您认为我应该以不同的方式执行此操作,请分享解决方案,谢谢。
答案 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";