PHP PDO bindParam () қайтарады TRUE, execution () қайтарады FALSE. Деректер базасында деректер бар

Мен өзімнің жаңа классым бойынша PDO-мен таңдалған сұрауларды орындау үшін менің дерекқор класында әдіс құруға тырысамын. Параметрлер ретінде іріктеу сұрауы мен массив байланыстыратын мәндерге өтуді қалаймын. Сұрау preg_match_all() арқылы өтеді және барлық параметрлерді шығарып алады. Бұдан кейін параметр/құнды жұптар циклды және байланыстырылады. execute() параметрін орындайды.

bindParam() returns true, but execute() returns false... I'm sure that there are two rows in the database that should be found.

Алдыңғы бетте берілген деректер:

Әдісі (мен отладка үшін пайдаланатын var_dump() ) мен қалдырды, олар шын және жалған береді):

public function selectQuery($select_query, $params) {

    try {
        //prepare query
        $stmt = $this - > dbh - > prepare($select_query);
        //get the parameters to bind
        preg_match_all('/:+(\w)*/', $select_query, $to_bind);
        //do the binding
        $i = count($params);
        while ($i > 0) {
            $i--;
            $str_to_bind = (string) $to_bind[0][$i];
            $str_param = (string) $params[$i];
            $str_param = '1';
            var_dump($stmt - > bindParam($str_to_bind, $str_param));
        }
        //execute
        var_dump($stmt - > execute());
    }
    catch (PDOException $e) {
        echo 'Select query failed: '.$e - > getMessage();
    }
}

Сценарий осы құндылықтарды беріп жатыр:

$select_query = "SELECT col1,col3 FROM test_table WHERE col2= :column";

$params[] = '1';

$dbh->selectQuery($select_query, $params);

... Менің ойымша, менің сұрағым: мен не істеп жатырмын?

Көп рақмет!

EDIT: Нев Stokes ұсынысынан кейін мен сұрауды орындауға тырысқан кезде, «Сұрауды таңдау сәтсіз аяқталды: SQLSTATE [3D000]: Жарамсыз каталог атауы: 1046 Дерекқор таңдалмады» деп айтқан кезде алып тастағанымды білдім. Мен байланыстыруға тырысып жатқан дерекқордың бар екенін білемін және байланысқа жіберілуде деп ойлаймын: не дұрыс емес болуы мүмкін?

Рақмет сізге!

0
Деректер қорының дескрипторын ұстап алуға тырысқыңыз келетін нақты жағдайларды жою үшін setAttribute қолданғансыз ба?
қосылды автор Nev Stokes, көзі
Орындалмағаны дұрыс емес болса, онда бұл $ (- ОСП режимінде mysqli болып отырсыз деп) себептері бойынша $ this-> dbh-> қатесін тексеріңіз.
қосылды автор Marc B, көзі
ықтимал көшірмесі PHP PDO сұрауларын жазу dbName . tableName - tableName дегенмен салыстырғанда - неге?
қосылды автор outis, көзі
Нев Стокеске рахмет, мен setAttribute қолдандым (осылайша мен ерекше жағдайларды көре аламын!). Сценарий енді 'echoing' Сұрауды таңдау сәтсіз аяқталды: SQLSTATE [3D000]: Жарамсыз каталог атауы: 1046 Дерекқор таңдалмаған ... 'дегенмен ... Бірақ байланыс жақсы, менің ойымша, дерекқор бар! Дегенмен өте шатыстырылған ...
қосылды автор David, көзі

Жауап жоқ

0