0
我搞砸了一点与我的PHP,只是想得到一些帮助。此刻,我的代码将从下拉框中选择的值,并将这些值与其相应的行一起放入表格中,然后放入3D数组中。但是,它只需要是2D数组,但我不知道如何摆脱3D数组的第一维。 PHP代码:为什么我的阵列是3D而不是2D?
<?php
function startmatching(){
define("DB_DSN", "mysql:host=localhost;dbname=FoodMatching");
define("DB_USERNAME", "root");
define("DB_PASSWORD", "");
// define the empty array to be filled from db
$results = array();
// any other php tasks that dont needthe ingcats
// store sql
$IngName = $_POST['IngredientName'];
$IngCounter=0;
while($IngCounter<count($IngName)){
$sSQL = "SELECT IngID, IngName, Texture, Colour, Bitter, Sweet, Sour, Salty, Umami FROM IngredientCharacteristics WHERE IngName='$IngName[$IngCounter]'";
// create an instance of the connection
$conn = new PDO(DB_DSN, DB_USERNAME, DB_PASSWORD);
// prepare
$st = $conn->prepare($sSQL);
// execute the connection
$st->execute();
$counter=0;
// while myslq has rows loop over them and store
while($row = $st->fetch()){
$results[$counter][] = $row;
$counter++;
}
$IngCounter++;
}
print_r($results);
}
?>
HTML:
<form method='post' role="form" autocomplete="off">
<div class="entry input-group col-xs-3">
<?php //this function takes the ing id and ingname from ingredientcharacteristics table.
// if there are results stored create the select and loop over
if(!empty($aIngList)){
echo "<span class='form-control' style = 'float:left; font-size: 20px;font-family:'Helvetica Neue' ><select name = 'IngredientName[]' class = 'custom-dropdown__select custom-dropdown__select--white'>";
//class = 'custom-dropdown custom-dropdown--white'
echo "<option value='' default >Choose an Ingredient</option>";
foreach ($aIngList as $iIngID => $sIngName) {
echo "<option value='".$sIngName."' >".$sIngName."</option>";
}
echo "</select></span>";
}else{
echo "<p>No results available!</p>";
}
?>
<span class="input-group-btn">
<button class="btn btn-success btn-add" type="button">
<span class="glyphicon glyphicon-plus"></span>
</button>
<button type="submit" class="hidden" name="startmatch" value ="startmatch" id="submit-form"></button>
</span>
</div>
</form>
1.4.3 $结果给出如下:
Array
(
[0] => Array
(
[0] => Array
(
[IngID] => 2
[0] => 2
[IngName] => Apples Fresh
[1] => Apples Fresh
[Texture] => 4
[2] => 4
[Colour] => 8
[3] => 8
[Bitter] => 7
[4] => 7
[Sweet] => 3
[5] => 3
[Sour] => 4
[6] => 4
[Salty] => 8
[7] => 8
[Umami] => 9
[8] => 9
)
[1] => Array
(
[IngID] => 2
[0] => 2
[IngName] => Apples Fresh
[1] => Apples Fresh
[Texture] => 4
[2] => 4
[Colour] => 8
[3] => 8
[Bitter] => 7
[4] => 7
[Sweet] => 3
[5] => 3
[Sour] => 4
[6] => 4
[Salty] => 8
[7] => 8
[Umami] => 9
[8] => 9
)
)
)
我不知道如何摆脱多余的阵列,因此任何帮助将不胜感激:)
此行'$ results [$ counter] [] = $ row;' –
您的脚本存在[SQL注入攻击]的风险(http://stackoverflow.com/questions/60174/how-cani-i-预防SQL注入在PHP) 看看发生了什么[小Bobby表](http://bobby-tables.com/)即使 [如果你逃避投入,它不安全!]( http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string) 使用[prepared参数化语句](http://php.net/manual/en/ mysqli.quickstart.prepared-statements.php) – RiggsFolly
'$ results [$ counter] [] = $ row;'应该是'$ results [] = $ row;'$ counter'变量是完全不必要的 – RiggsFolly