2016-04-15 1 views
1

У меня есть цикл в моей index.php:как передать указатель на функцию PHP для PDO

for ($i = 0; $i < $sent+1; $i++) { 

    $eintrag = "INSERT INTO users_match (user_id,match_id) VALUES ('$live_editor[$i]','$match[$i]')"; 
    $eintragen = mysql_query($eintrag); 
    $eintragen = $storage_access->eintrag($live_editor[$i], $match[$i]); 

Я переезжаю этот запрос на внешний файл и вызов с помощью функции PDO:

public function eintrag($live_editor[$i], $match[$i]) 
{ 
    $query = "INSERT INTO users_match (user_id,match_id) VALUES (:live_editor,:match) "; 
    $statement = $this->db->prepare($query); 
    $statement->execute([ 
     ':live_editor' => $live_editor[$i], 
     ':match' => $match[$i], 
    ]); 
    return $statement->fetchObject(); 
} 

и позвонив в index.php:

$eintragen = $storage_access->eintrag($live_editor[$i], $match[$i]); 

Я не то, что хорош в PHP, но как передать значение индекса в качестве параметра функции? Когда мне это нравится, я получаю ошибку:

Parse error: syntax error, unexpected '[', expecting ')'

+0

Не смешивайте 'mysql_' и' mysqli_' или 'PDO' все в одном и том же скрипте. Какой из них вы используете для установления связи? – RiggsFolly

+0

@RiggsFolly Я использую PDO –

+0

Что это значит '$ eintragen = mysql_query ($ eintrag);' – RiggsFolly

ответ

1

Неправильные параметры вашей функции.

Вместо:

public function eintrag($live_editor[$i], $match[$i]) 

Вы должны иметь:

public function eintrag($live_editor_item, $match_item) 

и в функции делают:

$statement->execute([ 
     ':live_editor' => $live_editor_item, 
     ':match' => $match_item, 
    ]); 

вы действуете вызов будет по-прежнему:

$eintragen = $storage_access->eintrag($live_editor[$i], $match[$i]); 
+0

Спасибо, что это сработало. –

1

Функция не требует индексированных параметров, только имена переменных.

public function eintrag($live_editor, $match) 
{ 
    $query = "INSERT INTO users_match (user_id,match_id) VALUES (:live_editor,:match) "; 
    $statement = $this->db->prepare($query); 
    $statement->execute([ 
     ':live_editor' => $live_editor, 
     ':match' => $match, 
    ]); 
    return $statement->fetchObject(); 
} 
+0

См. http://stackoverflow.com/questions/36650427/how-to-pass-index-to-php-function-for-pdo#comment60895016_36650427 – RiggsFolly

Смежные вопросы