Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将新属性附加到对象中的PHP问题?_Php_Mysql_Json_Null_Collation - Fatal编程技术网

将新属性附加到对象中的PHP问题?

将新属性附加到对象中的PHP问题?,php,mysql,json,null,collation,Php,Mysql,Json,Null,Collation,我开始学习php与mysql db的交互 我必须从两个不相关的表中获取数据,形成一个stdClass对象数组,然后将其作为json数组转储 到目前为止,我已设法从表1中获取数据,并将其中的一些列添加到 MyObject[],如下所示 这里$array是一个主键数组,我还传递了对myobjects数组的引用 function load_from_table1($array , &$myobjects) { foreach($array as $num)

我开始学习php与mysql db的交互

我必须从两个不相关的表中获取数据,形成一个stdClass对象数组,然后将其作为json数组转储

到目前为止,我已设法从表1中获取数据,并将其中的一些列添加到 MyObject[],如下所示

这里$array是一个主键数组,我还传递了对myobjects数组的引用

  function  load_from_table1($array , &$myobjects)
  {      
        foreach($array as $num)
        {

            $obj=(object)null;
            $obj->prop1 = $num;

            $sql="SELECT * FROM `table1` WHERE col1=".$num;
            $result = mysqli_query($con, $sql);

            if($result!=null)
            {
                $row = mysqli_fetch_assoc($result);

                //inserting data into object
                $obj->prop2 = $row['col2'];
                $obj->prop3 = $row['col3'];
                $obj->prop4 = $row['col4'];

            }   


        $myobjects[]=$obj;
        } 
    }
到目前为止还不错,我需要向从表2中获得的MyObject数组中的所有项添加两个属性

function load_from_table2(&$data)
{
    for($i=0;$i<sizeof($data);$i++)
    {

        $obj=(object)$data[$i];
        $id=$obj->prop1;

        $sql="SELECT * FROM `table2` WHERE col1=".$id;

        $result = mysqli_query($con, $sql);

        if($result!=null)
        {
           $row = mysqli_fetch_assoc($result);

           //$temp=$row['name'];
            //echo $temp;
            //$obj->name = "test1";

            $obj->name = $row['name'];

            //$temp=$row['description'];
            //echo $temp;
            //$obj->description = "test2";

            $obj->description = $row['description'];

        } 
   }
从表2中加载函数(&$data)
{
对于($i=0;$iprop1;
$sql=“从`table2`中选择*,其中col1=”.$id;
$result=mysqli\u查询($con,$sql);
如果($result!=null)
{
$row=mysqli\u fetch\u assoc($result);
//$temp=$row['name'];
//echo$temp;
//$obj->name=“test1”;
$obj->name=$row['name'];
//$temp=$row['description'];
//echo$temp;
//$obj->description=“test2”;
$obj->description=$row['description'];
} 
}
当我将myobjects转储为json时,没有输出。但是$temp正确地回显,而且当我将值直接导入时,一切似乎都正常工作

有人能帮我吗?如果能解释一下我做错了什么,我将不胜感激。谢谢

关于工作环境的一些细节,因为我提供了答案,
我使用的是WAMPServer2.564位,目前正在firefox浏览器上执行php文件


这种情况相当混乱,因为我可以读取值并将其打印或保存到变量,但不能将其另存为对象属性。

我让它工作,但问题不在于代码。我正在读取的表中的列似乎将排序规则设置为“utf8\u general\u ci”,不确定这意味着什么。但是当我删除该设置时g,这一切都像预期的那样起作用。但我觉得整理并不是真正的根本原因。所以我将继续讨论这个问题,希望有人能提供解释

似乎我在寻找错误的问题。阅读排序规则时,我发现一些字符集不完全受支持,因此我尝试回显对象数组的内容,而不是json_encode,并发现它已打印

为此,我在stackoverflow上找到了另一个qst,解决了我的问题。
在我开始对该表进行任何查询和json编码开始工作之前,简单地添加了这一行::mysqli_set_charset($con,'utf8')。

在您的第二个函数中,当您执行
$obj=(object)$data[$i];
时,您并没有将
$obj
变成一个引用。所以当您执行
$obj->name=$row['name'];
,您并没有将其添加到
$data
,您只是将其添加到
$obj
(已转换为对象的数组值的副本)。@Rocket Haxmat我理解您的逻辑,但在这种情况下,以下操作也不应该起作用,但它们确实起作用;$obj->test=“test”或$temp=“test”$obj->test=$temp;请查看我上面的问题,了解我数据库中的详细信息。我选择这个作为答案,这样任何一个不幸遇到同样问题的人都可以找到它,并为他们节省大量时间。