Может кто-то помочь мне, чтобы посмотреть, что происходит не так с этой установкойп.д.о.
Я построить запрос @sql в функции ниже, как это. Дополнительные кавычки настраиваются в массиве условий.
$sql .= " WHERE $field = \"$value\"";
Функция обновления pdo выполняет цикл массивов, подобный этому.
if (!is_null($conditions))
{
$cond = ' WHERE';
$obj = new CachingIterator(new ArrayIterator($conditions));
foreach($obj as $k=>$v)
{
$cond .= " $k=$v";
$cond .= $obj->hasNext() ? ' AND' : '';
}
}
Моя точка, чтобы сделать то, что я не могу строить массивы со значениями без добавления слэш кавычек вокруг значений. В противном случае ошибка sql, которая бросается, заключается в том, что она является неизвестным столбцом.
Есть ли что-то другое, что я могу сделать?
Может кто-нибудь дать мне некоторые данные по этому просьбе.
редактировать: остальные выключить функцию обновления
Где я могу связать значения массива условий и иметь их выполняются также? Как я вижу это сейчас, выполняется только массив значений? Нужно ли цитировать оба массива, а затем объединить оба массива?
$obj = new CachingIterator(new ArrayIterator($values));
$db = db::getInstance();
$sql = "UPDATE $table SET \n";
foreach($obj as $field=>$val)
{
$sql .= "$field= :$field";
$sql .= $obj->hasNext() ? ',' : '';
$sql .= "\n";
}
$sql .= $cond ;
$stmt = $db->prepare($sql);
// bind de params
foreach($values as $k=>$v)
{
$stmt->bindParam(':'.$k, $v);
}
$stmt->execute($values);
спасибо, Ричард
Спасибо, это полезно, я уже строю 4 петли в одной функции, потому что я не слишком знаком с этим. Я должен поближе рассмотреть. – Richard
Вы можете закрепить свой код, используя 'array_map()' и 'join()' вместо всех этих циклов. –
Спасибо, вы быстрее, я никогда не использовал эти функции, поэтому я также посмотрю на это. – Richard