Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Kesalahan memanggil prosedur tersimpan MySQL melalui PHP

Saya berasumsi argumen pertama dari prosedur tersimpan Anda adalah VARCHAR, jadi masalah pertama adalah Anda melewatkan $q variabel tanpa tanda kutip dalam kueri. Seharusnya seperti ini:

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

Selain itu, Anda tidak perlu melakukan dua panggilan SELECT, lakukan hanya sekali:

SELECT @eset AS eset, @leng AS leng;

Tak perlu dikatakan bahwa input pengguna tidak boleh dipercaya. Anda harus menggunakan pernyataan yang telah disiapkan:

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. perbarui data di div

  2. MySQL mengatur tanggal saat ini di bidang DATETIME saat disisipkan

  3. Mendapatkan nilai yang salah untuk kolom lain ketika saya memilih MAX(updated_date)

  4. Hasil Kontes Peringkat Gambar dengan Peringkat Bintang 5

  5. Kesalahan kueri Python/MySQL:`Kolom tidak dikenal`