php - 从 mysql 导入的数组有效,但 php 不能将数组用作数组?

标签 php mysql arrays variables

由于 $params=array($data); 这一行,下面的代码将无法运行。它需要 $data 以外的东西。或者它需要在此行之前对 $data 进行处理。

如果该行写成 $params=array("A", "B", "C", "D");然后效果很好,但是我的数组在 $data 变量中,不是那样写的。如果有一种方法可以将数组转换为这样写出,那也行。

最终结果应显示数组内容的所有可能组合(而非排列)。如上例所示,它显示 ABC、BD 等。

$data = mysql_query('SELECT weight FROM my_table WHERE session_id = "' . session_id() . '"'); 

$params=array($data);

$combinations=getCombinations($params);
function getCombinations($array)
{
    $length=sizeof($array);
    $combocount=pow(2,$length);
for ($i=1; $i<$combocount; $i++)
    {

$binary = str_pad(decbin($i), $length, "0", STR_PAD_LEFT);
        $combination='';
        for($j=0;$j<$length;$j++)
        {
            if($binary[$j]=="1")
                $combination.=$array[$j];
        }
        $combinationsarray[]=$combination;
        echo $combination."&lt;br&gt;";
    }
    return $combinationsarray;
} 

最佳答案

mysql_query() 只返回一个结果资源 ID。要检索数据,您必须使用“获取”命令之一,例如

$params = array();
while ($row = mysql_fetch_assoc($data)) {
    $params[] = $row['weight'];
}

此外,您的查询可能容易受到 SQL 注入(inject)攻击。我不会暗中相信 session_id() 的值。我不完全确定这一点,但它可能只是从 session cookie 中检索值。

至少,使用 mysql_real_escape_string() 清理值。将您的代码带出黑暗时代的更强大的解决方案是使用 PDO 和参数绑定(bind)。

关于php - 从 mysql 导入的数组有效,但 php 不能将数组用作数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7264925/

相关文章:

javascript - 按 3 个值对 JavaScript 数组进行排序

php - .htaccess url 用变量重写

php - 通过PHP在MySQL中插入Jquery

php - Highcharts 自定义 PHP/MySQL

MySQL 在 Ubuntu 16.04 上升级失败

mysql - 在单个查询中从 MySQL 选择唯一值

javascript - 如何将 jQuery 自动完成(=实时搜索)与 Laravel Controller 结合使用

php - 使用 PHP 的动态网站

javascript - 仅针对某些键从数组映射数据(未过滤)

javascript数组比较循环多次