Я получаю запись из базы данных с моим PHP rest API.
http://myapiyrl/product/get.php?id=20
resut:
{
"id": "20",
"name": "laptop",
"color": "white",
"price": "1200"}
Поэтому я хочу отредактировать эту запись. Я публикую эту запись на post.php
http://myapiyrl/product/post.php
private function createUpdateQueryStringFrom($_POST){
$attributes = array();
foreach ($_POST as $key => $value)
$attributes[] = " $key=$value ";
$query_string = " UPDATE product ";
$query_string .= " SET ";
$query_string .= join(",", $attributes);
$query_string .= " WHERE gid = ";
$query_string .= $_POST["gid"];
return $query_string;
}
Эта функция создает строку запроса на обновление следующим образом:
update product set id=20, name=laptop, color=black, price=1250 where id=20
This gives error: pg_query(): Query failed: ERROR: syntax error at or
near "," ^name=laptop
Я думаю, что этот запрос на обновление должен быть создан по типам столбцов. если столбец является строкой, он будет между («»), если это не номер.
update product set id=20, name="laptop", color="black", price=1250 where id=20
Как я могу решить эту проблему? Могу ли я указать типы при получении из базы данных следующим образом:
{
{"id": "20", "type": "number"}
{"name": "laptop","type": "string"}
{"color": "white","type": "string"}
{"price": "1200","type": "number"}
}
Вы можете проверить значение с is_numeric
и добавьте кавычки соответственно:
foreach ($_POST as $key => $value)
$attributes[] = is_numeric($value) ? " $key=$value " : " $key=\"$value\" ";
Других решений пока нет …