我在将数组插入MySQL数据库时遇到问题。我想发现我不能将数组插入表的列中,我应该分离数组的值然后执行插入操作。但我不知道如何分离值并插入这些值。我应该分开值而不使用数组吗?
另外,我想创建表来显示db存储的所有值(number1-10)。
谢谢大家!
以下是我的代码:
$varNum = array('1','2','3','4','5','6','7','8','9','10');
//an array showed in the selection box
<form action="testing_Rand.php" method="post">
<p><b><center>Choose an amount of random numbers in the selection box</center></b></p>
<p>
<select name="selectNum">
<?php
foreach($varNum as $key => $value):
echo '<option value="'.$key.'">'.$value.'</option>';
endforeach;
?>
</select>
</p>
<center><input type="Submit" value="submit"></center>
</form>
//A POST function to generate the random numbers
//do post function
if(isset($_POST["selectNum"]) ){
$arrayRand=intval($_POST["selectNum"]);
for($i=0;$i<=$arrayRand;$i++){
$varNum[$i]=rand(1,10000);
}
var_dump($varNum); //show results
$newRand = "INSERT INTO testing_Rand (number1, number2, number3, number4, number5, number6, number7, number8, number9, number10) VALUES ('$varNum')";
mysql_query($newRand);
}
//show mysql database results
$sqlDBrand = "SELECT id, number1, number2, number3, number4, number5, number6, number7, number8, number9, number10 FROM rand.testing";
$result = mysql_query($sqlDBrand) or die('MySQL query error');
while($row = mysql_fetch_array($result)){
echo $row['id'];
echo $row['number1'];
echo $row['number2'];
echo $row['number3'];
echo $row['number4'];
echo $row['number5'];
echo $row['number6'];
echo $row['number7'];
echo $row['number8'];
echo $row['number9'];
echo $row['number10'];
}
答案 0 :(得分:1)
我认为这可能对你有帮助,
首先创建一个字符串$sql
,然后在mysql_query()
$sql="INSERT INTO rand.testing (number1, number2, number3, number4, number5, number6, number7, number8, number9, number10) VALUES (";
$sql.=implode(',', $varNum);
$sql.=")";
mysql_query($sql);
答案 1 :(得分:0)
这取决于您的数据和目标。
查看函数implode
:
$arr = [1,2,3,4,5];
$data = implode ('|', [1,2,3,4,5]) //1|2|3|4|5
$arr = explode('|', $data); //Converted back
http://www.php.net/manual/de/function.implode.php
如果您需要它可搜索,请考虑序列化为XML
$arr = [1,2,3,4,5];
$xml = new SimpleXMLElement('<root/>');
array_walk_recursive($arr, array ($xml, 'addChild'));
https://stackoverflow.com/a/1397164/2441442
如果您需要它不可搜索,您还可以查看serialize
$arr = [1,2,3,4,5];
$data = serialize($arr);
unserialize($data);
答案 2 :(得分:0)
回到舞台,你有一个表有固定数量的列,但存储可变数量的数据字段。这通常是一个坏主意。
最好将其拆分为2个表格。一个只是存储一些东西来识别一组数字,另一个表存在每组数字的几行;每组每个随机数一行。
这是数据规范化的基本部分。
您可以插入2个表并使用以下内容获取值: -
<?php
//A POST function to generate the random numbers
//do post function
if(isset($_POST["selectNum"]) )
{
$arrayRand=intval($_POST["selectNum"]);
for($i=0;$i<=$arrayRand;$i++)
{
$varNum[$i]=rand(1,10000);
}
if (count($varNum))
{
var_dump($varNum); //show results
$newRand = "INSERT INTO testing_rand (id) VALUES(NULL)";
mysql_query($newRand);
$inserted_id = mysql_insert_id ();
$newRand = "INSERT INTO testing_rand_numbers (rand_id, number) VALUES($inserted_id, ".implode("),($inserted_id, ", $varNum).")";
}
}
//show mysql database results
$sqlDBrand = "SELECT id, GROUP_CONCAT(b.number) AS all_numbers FROM testing_rand a LEFT OUTER JOIN testing_rand_numbers b ON a.id = b.rand_id";
$result = mysql_query($sqlDBrand) or die('MySQL query error');
while($row = mysql_fetch_array($result))
{
echo $row['id'];
echo $row['all_numbers'];
}
?>