我有一个名为HTML代码集的PHP文件,这段代码显示了为下一个进程选择的位置的多个ID(Form是GET)。PHP错误:数组到字符串转换
$sqloc = mysql_query("SELECT loc_id FROM location");
while ($row = mysql_fetch_array($sqloc)){
echo "<tr><td>
<label><input type=\"checkbox\" name=\"chk_loc[]\" value=". $row['loc_id'] ." />
</td><td>" . $row['loc_id'] . "</td></tr></label>"; }
然后在其他PHP文件中,我使用此代码根据所选ID使用复选框之前选择数据。
$cbarray = array();
if (isset($_GET['submit_location'])) {
$cbarray = $_GET['chk_loc']; }
for ($i=0; $i<count($cbarray); $i++) {
$sqlcb = mysql_query("SELECT * FROM location WHERE loc_id = '$cbarray'");
while($ccb= mysql_fetch_row($sqlcb)) {
print_r($ccb); }
}
但是当我运行它,它出现在通知:
Array对字符串转换....在线62
在这是对($线62 sqlcb = mysql_query)部分。我已经使用var_dump来检查数组,并且它像这样打印数组:
array(4) { [0]=> string(5) "LO001" [1]=> string(5) "LO003" [2]=> string(5) "LO004" [3]=> string(5) "LO005" }
有没有办法解决这个问题?谢谢。
因此,$ cbarray是数组,你试图将它转换为字符串(在SQL查询中),你还能期待什么?还注意到sql注入问题 –
简单的解决方法 - 你需要不使用'... WHERE loc_id ='$ cbarray'“);'''WHERE loc_id ='”。$ cbarray [$ i]。“'” );'..我想推荐使用'PDO/mysqli'而不是弃用'myqsl_''函数和'foreach'而不是'for'。 Ofc收到的参数需要进行消毒或使用“绑定”变量(使用PDO/mysqli)。 – Wizard