MySQL — проблема PHP с добавлением нового свойства в объект?

Я начинаю изучать PHP для взаимодействия с MySQL DB.

Я должен получить данные из двух несвязанных таблиц и сформировать массив объектов stdClass, а затем вывести их в виде массива json.

Мне до сих пор удалось получить данные из таблицы 1 и добавить некоторые столбцы из нее в
myobjects [], следующим образом ..

Здесь $ 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;
}
}

Пока все хорошо, мне нужно добавить еще два свойства ко всем элементам в массиве myobjects, полученном из table2.

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'];

}
}

Когда я сбрасываю myobjects как json, нет вывода. Но $ temp эхом правильно, даже когда я использую прямые значения, кажется, что все работает нормально.

Может ли кто-нибудь помочь мне с этим, также было бы очень полезно объяснить, что я делаю неправильно. Благодарю вас.

Некоторые подробности о рабочей среде. Из-за ответа, который я дал,
Я использую wampserver 2.5 64 bit, и сейчас выполняю php файл из браузера firefox.

Ситуация немного сбивает с толку, так как я могу прочитать значение и распечатать его или сохранить в переменную, но не сохранить его как свойство объекта.

0

Решение

Я получил его на работу, но проблема была не с кодом. Кажется, что столбец в таблице, которую я читал, имеет сопоставление, установленное в ‘utf8_general_ci’, не уверенное, что это значит. Но когда я удалил эту настройку, все заработало как положено. Но я чувствую, что сопоставление не является основной причиной. Так что я буду держать этот вопрос открытым в надежде, что некоторые могут дать объяснение.

Кажется, я искал не те вопросы. Читая о сопоставлении, я обнаружил, что некоторые наборы символов не поддерживаются полностью, поэтому я попытался отобразить содержимое массива объектов вместо json_encode и нашел его напечатанным.

в поисках с этой целью я нашел еще один QST Вот на stackoverflow, который решил мою проблему.
Просто добавил эту строку :: mysqli_set_charset ($ con, ‘utf8’); прежде чем я начал какие-либо запросы к этой таблице, и json_encode начал работать.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]