Mysql
 sql >> база данни >  >> RDS >> Mysql

Грешка при извикване на съхранена процедура на MySQL чрез PHP

Предполагам, че първият аргумент на вашата съхранена процедура е VARCHAR, така че първият проблем е, че предавате $q променлива без кавички в заявката. Трябва да е така:

$db->multi_query("CALL mst2('$q', @eset, @leng); SELECT @eset as eset; SELECT @leng as length");

Освен това не е необходимо да правите две SELECT извиквания, направете го само веднъж:

SELECT @eset AS eset, @leng AS leng;

Излишно е да казвам, че никога не трябва да се вярва на потребителските данни. Трябва да използвате подготвени изрази:

if (($stmt = $db->prepare("CALL mst2(?, @eset, @leng)"))) {
    $stmt->bind_param("s", $q);
    $stmt->execute();
    $stmt->close();

    if (($res = $db->query("SELECT @eset AS eset, @leng AS leng"))) {
        list($eset, $leng) = $res->fetch_array();
        $result = $eset.$length;
        echo $result;

        $res->free();
    }
}



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL:Невалидни ГИС данни, предоставени на функцията st_geometryfromtext

  2. Препълване на цяло число какво ще бъде следващото

  3. Форма за регистрация с php, mysql

  4. Какви са предимствата на режима only_full_group_by?

  5. Вмъкнете стойността на колоната с времеви печат на MySQL с SqlAlchemy