PHP MYSQL не может хранить свойства объекта в таблице - PullRequest
0 голосов
/ 14 февраля 2011

Я пытаюсь добавить итерацию по объекту и добавить эти свойства объекта в базу данных mysql.Использование:

//This works
$sql = "CREATE TABLE $table ($ID int primary key auto_increment not null)";
mysql_query($sql);
//This works
function iterateObject($obj, $name='') {
  foreach ($obj as $key=>$val) {
    $myName = ($name !='') ? $name . "_" . $key : $key;
    if ( is_object($val) || is_array($val) ) {
      iterateObject($val, $myName);
    } else {
      //This works
      $sql = ("ALTER TABLE home_timeline ADD COLUMN $myName VARCHAR(256);");
      mysql_query($sql);

      //This doesn't work
      $sql2 = ("INSERT INTO home_timeline ($myName) VALUES ($val);");
      mysql_query($sql2);
      print "$myName - $val <br />";
    }
  }
}

Таблица создается и изменяется таким образом, что каждая итерация добавляет новый столбец в таблицу, но когда я пытаюсь добавить значения в этот столбец (второй оператор sql), все становится пустым, и сценарий создаетБолее 20 строк, а не все значения отображаются в одной строке в соответствующем столбце.Может ли кто-нибудь помочь?

1 Ответ

2 голосов
/ 14 февраля 2011

почему бы не использовать функции типа serialize() и unserialize() при преобразовании объектов в / из строки?

секунда: если $val строка, то в запросе введите разделители строки

"INSERT INTO home_timeline (`$myName`) VALUES ('$val');"

хотя вставка параметров через конкатенацию является очень плохой практикой, склонной к внедрению SQL.

Если у вас возникли дополнительные проблемы, выведите запрос перед выполнением и поместите его здесь. Вы можете столкнуться со случаем, когда у вас есть много столбцов, которые не могут быть пустыми и не имеют значений по умолчанию. Также выведите здесь структуру таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...