Преобразование массива в строку при удалении

Привет, у меня есть динамический запрос на удаление, который я использовал ранее, так что я знаю, что он работает, но по какой-то причине, когда я хочу удалить пользователя, он продолжает говорить, что преобразование массива в строку может помочь вам.

Динамический запрос на удаление:

public function deleteRow($tabel,$columns,$values)
{
$this->setQuery('DELETE FROM '.$tabel.' WHERE '.$columns .' = '. $values);

$this->setStmt($this->getConn()->prepare($this->getQuery()));
$this->setStmt($this->getStmt()->execute());
return $this->getQuery();
}

Затем у меня есть функция, которая заполняет информацию о пользователе и выполняет запрос:

public function MedewerkerDelete()
{
$query = new Query();

$tabel = 'medewerkers'; //welke tabellen zijn er nodig in dit geval is dat customers die hebben we nodig om gebruikers te registreren.
$columns = array('medewerker_naam', 'medewerker_achternaam','account_id'); //welke gegevens moeten er in de customers tabel komen die komen in deze array te staan alle kolommen dus.

$tabel2 = 'account';
$columns2 = array('account_wachtwoord', 'account_email','account_rol');

echo '

<form method = "POST"> <!--hier komt het formulier waarmee alle gegevens worden doorgestuurd.-->
<p>Medewerker Verwijderen</p>
<label for="medewerker_naam">Naam</label>
<input type="text" name="medewerker_naam" value=" ' . $_SESSION['vNaam'] . '  "><br>
<label for="medewerker_achternaam">Achternaam</label>
<input type="text" name="medewerker_achternaam" value=" ' . $_SESSION['aNaam'] . '  "><br>
<label for="account_wachtwoord">Wachtwoord</label>
<input type="password" name="account_wachtwoord"><br>
<label for="account_email">Email</label>
<input type="text" name="account_email" value=" ' . $_SESSION['eMail'] . '  "><br>
<label for="account_rol">Rol</label>
<input type="text" name="account_rol">
<input type="submit" name="submit_medewerkers_delete" value="delete">

</form>

';


if (isset($_POST['submit_medewerkers_delete'])) //als het formulier is ingevuld en verzonden wordt zet dan alle waardes die zijn ingevuld in een array dat is dus de $values.
{
$values2 = array(md5($_POST['account_wachtwoord']), $_POST['account_email'],$_POST['account_rol']);
$query->deleteRow($tabel2, $columns2, $values2);
$last_id = $query->getConn()->lastInsertId();
$values = array($_POST['medewerker_naam'],$_POST['medewerker_achternaam'],$last_id); //hier staan alle ingevulde waardes zoals naam is pieter.
$query->deleteRow($tabel,$columns,$values); //als alles is ingevuld en verstuurd zorg er dan voor dat alle benodigde gegevens zoals tabel kolom en ingevulde waardes worden meegegeven aan de createquery functie en voer het vervolgens uit.
var_dump($values);
var_dump($query->getQuery());
}

}

Надеюсь, вы, ребята, можете мне помочь. Я не могу понять это.

1

Решение

Что ж … для того, чтобы функция deleteRow () работала с обеими переменными $columns а также $values должны быть строки.
Вы передаете массивы.
Увидеть
$values2=array(md5($_POST['account_wachtwoord']),$_POST['account_email'],$_POST['account_rol']);
$columns2 = array('account_wachtwoord', 'account_email','account_rol');

0

Другие решения

Поскольку у вас есть переменное число столбцов и, следовательно, условия, это будет означать динамическое построение оператора …

function deleteRow($tabel,$columns,$values)
{
$conditions = array();
foreach ( $columns as $ind => $column ) {
$conditions[] = $column.'="'.$values[$ind].'"';
}
$query = 'DELETE FROM '.$tabel.' WHERE '.implode(' and ',$conditions);

$this->setQuery($query);
$this->setStmt($this->getConn()->prepare($this->getQuery()));
$this->setStmt($this->getStmt()->execute());
return $this->getQuery();
}

Что это делает, это построить список каждого отдельного условия, так что-то вроде account_email="some@email.address" а затем добавить их все вместе, используя implode() поставить and между каждым. Затем это встроено в общий запрос …

DELETE FROM account WHERE account_wachtwoord="a" and account_email="b" and account_rol="c"

Также возможно использовать значения связывания в зависимости от того, как другие ваши методы работают, используя …

function deleteRow($tabel,$columns,$values)
{
$conditions = array();
foreach ( $columns as $ind => $column ) {
$conditions[] = $column.'=?';
}
$query = 'DELETE FROM '.$tabel.' WHERE '.implode(' and ',$conditions);

$this->setQuery($query);
$this->setStmt($this->getConn()->prepare($this->getQuery()));
$this->setStmt($this->getStmt()->execute($values));
return $this->getQuery();
}
0

Вы отправляете $ столбцы и значения в виде массивов:

$columns = array('medewerker_naam', 'medewerker_achternaam','account_id');
$values2 = array(md5($_POST['account_wachtwoord']), $_POST['account_email'],$_POST['account_rol']);

Затем вы пытаетесь объединить этот массив в строку:

$this->setQuery('DELETE FROM '.$tabel.' WHERE '.$columns .' = '. $values);
$values2 = '(' . md5($_POST['account_wachtwoord']) . ', ' . $_POST['account_email'] . ',' . $_POST['account_rol'] . ')';

Это ошибка. Попробуйте установить $ columns и $ columns2 как строки:

$columns = '(medewerker_naam, medewerker_achternaam, account_id)';
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector