как посчитать одно значение в строке и увеличить его на единицу в php

0

Я создаю простую и динамическую функцию для вставки значений в таблицу базы данных mysql. так что проблема идет с привязкой параметров. поэтому мне нужно знать, как подсчитать, сколько "?" помечены в этой строке запроса и как увеличить его по одному. поэтому, если у кого-то есть хороший ответ, пожалуйста, дайте мне знать. Это функция, которую я написал для этого

function insertValues($table,$fields,$values){
    global $pdo;
    $field_include = '';
    $value_include = '';

    if(is_array($fields))
    {
        foreach ($fields as $key => $value) 
        {
            $field_include .= ($key == 0) ? $value : ','.$value;
        }
    }
    if(is_array($values))
    {
        foreach ($fields as $key => $value) 
        {
            $value_include .= ($key == 0) ? "?" : ','.'?';
        }
    }
    $sql = $pdo->prepare('INSERT INTO '.$table.'('.$field_include.') VALUES ('.$value_include.')');

    $sql->execute(array($value_include));

Спасибо

  • 0
    В чем проблема с этим кодом?
  • 0
    я запускаю этот код без каких-либо ошибок. но есть еще одна ошибка в моей таблице phpmyadmin. это показывает мне, что поля пусты. я не знаю почему это
Теги:

1 ответ

0
Лучший ответ

Раньше $value_include как строка с вопросительными $value_include. Я думаю, вам нужно использовать $values instad array($value_include) в этой строке:

$sql->execute(array($value_include));

Обновить:

function insertValues($table,$fields,$values){
    global $pdo;
    $field_include = '';
    $value_include = '';

    if(is_array($fields))
    {
        foreach ($fields as $key => $value) 
        {
            $field_include .= ($key == 0) ? $value : ','.$value;
        }
    }
    if(is_array($values))
    {
        //Replaced $fields with $values 
        foreach ($values as $key => $value) 
        {
            $value_include .= ($key == 0) ? "?" : ','.'?';
        }
    }
    $sql = $pdo->prepare('INSERT INTO '.$table.'('.$field_include.') VALUES ('.$value_include.')');

    $sql->execute($values);
  • 0
    Затем я использую это, как вы сказали, говорит об ошибке, как это преобразование массива в строку
  • 0
    На какой линии? На $sql->execute($values); или другая строка?
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню