当我尝试将关联数组中的值存储到表中时,我在php中收到非法字符串偏移警告。
当我打印关联数组时,我得到了这个:
数组([productName] => iphone [productDesc] =>来自apple的产品[price] => 5 [image] => test / Group / pic.png)
$db1 = new mysqli('localhost',$user,$pass,$db) or die (" Connection failed ");
$query="Select productName,productDesc,price,image from product where productID=1";
$query_first=mysqli_query($db1,$query) or die("Query not retrieved");
$query_second=mysqli_fetch_assoc($query_first);
//print_r($query_second);
$rows=mysqli_num_rows($query_first);
echo '<table border="1">';
echo '<tr>
<td> Product Name</td>
<td> Product Description</td>
<td> Price</td>
<td> Image </td>
</tr> ';
foreach($query_second as $r)
{
echo '<tr><td>'.$r['productName'];
echo '</td><td>'.$r['productDesc'];
echo '</td><td>'.$r['price'];
echo '</td><td>'.$r['image'];
echo '</td></tr>';
}//end foreach
echo"</table>";
答案 0 :(得分:1)
http://php.net/manual/en/mysqli-result.fetch-assoc.php
mysqli_result :: fetch_assoc - mysqli_fetch_assoc - 获取结果行 作为关联数组
mysqli_mysqli_fetch_assoc从数据库返回一个行。 正如您在print_r()的结果中看到的那样。
数组包含:
Array ( [productName] => iphone [productDesc] => A product from apple [price] => 5 [image] => test/Group/pic.png )
因此,当你在第一次迭代中遍历数组时,$ r将包含一个值为#34的字符串; iphone&#34;,第二个循环&#34;来自apple&#34;的产品等等。
在您的代码中,您基本上是说#34;来自STRING iphone给我的位置&#39; productName&#39; &#34;,你可以猜到&#34; productName&#34;不是字符串中的有效字符位置。
所以你需要迭代表中的每一行。
<?php
$db1 = new mysqli('localhost',$user,$pass,$db) or die (" Connection failed ");
$query="Select productName,productDesc,price,image from product where productID=1";
$query_first=mysqli_query($db1,$query) or die("Query not retrieved");
//print_r($query_second);
echo '<table border="1">';
echo '<tr>
<td> Product Name</td>
<td> Product Description</td>
<td> Price</td>
<td> Image </td>
</tr> ';
while($r=mysqli_fetch_assoc($query_first)) {
echo '<tr><td>'.$r['productName'];
echo '</td><td>'.$r['productDesc'];
echo '</td><td>'.$r['price'];
echo '</td><td>'.$r['image'];
echo '</td></tr>';
}//end foreach
echo"</table>";
?>
如果你只想要一行,那么你就不需要交流
<?php
$db1 = new mysqli('localhost',$user,$pass,$db) or die (" Connection failed ");
$query="Select productName,productDesc,price,image from product where productID=1";
$query_first=mysqli_query($db1,$query) or die("Query not retrieved");
//print_r($query_second);
echo '<table border="1">';
echo '<tr>
<td> Product Name</td>
<td> Product Description</td>
<td> Price</td>
<td> Image </td>
</tr> ';
$r=mysqli_fetch_assoc($query_first);
echo '<tr><td>'.$r['productName'];
echo '</td><td>'.$r['productDesc'];
echo '</td><td>'.$r['price'];
echo '</td><td>'.$r['image'];
echo '</td></tr>';
echo"</table>";
?>
答案 1 :(得分:0)
mysqli_fetch_assoc返回一行,因此您不需要使用以下内容循环:
foreach($query_second as $r)