PHP从Firebird获取数据

时间:2018-09-15 12:50:28

标签: php mysql firebird interbase

我的问题正在更新。我的新问题是这个;

  <?php

    header('Access-Control-Allow-Origin: *');
    header('Access-Control-Allow-Headers: X-Requested-With');
    header('Access-Control-Allow-Headers: Content-Type');
    header('Access-Control-Allow-Methods: POST,GET,OPTIONS,DELETE,PUT');

    header('Cache-Control:public, max-age=100');

    if ($db = ibase_connect('111.222.333.444:C:\xx\xx\xx\xx\xx\xx.FDB', 'SYSDBA',
      'masterkey')) {



        $sql = "select * from STOK where barkodu='$barkodu'";

        $query =  ibase_prepare($sql);
        $rs=ibase_execute($query);


        if($row = ibase_fetch_row($rs)){

        $stok_adi = $row[2];

        $sonuc->stok_adi = $stok_adi;

      }

        ibase_close($db);

      } 
      else {
        $sonuc->durum = "cevapyok";
        }
      echo json_encode($sonuc);


    ibase_free_query($query);
    ibase_free_result($rs);
 ?>

有我的代码,可以正常使用;

$sql = "select * from STOK";

但是我想要这个;

$sql = "select * from STOK where barkodu='$barkodu'";

如何从外部获取带有http帖子的$barkodu? 谢谢。

顺便说一句; 我已使用111.222.333.444更改了IP地址 和我的数据库位置与C:\xx\xx\xx\xx\xx\xx.FDB 为了我的安全

1 个答案:

答案 0 :(得分:0)

警告:我通常不使用PHP编程,此答案基于阅读文档和对Firebird的了解。

您当前的代码不安全,并且容易受到SQL注入的攻击。代替使用字符串插值将值直接放入查询字符串中,您应该使用参数化查询。

也就是说,您需要将代码更改为:

$sql = "select * from STOK where barkodu=?";

$query = ibase_prepare($sql);
$rs = ibase_execute($query, $barkodu);

或者,鉴于您没有重复使用查询:

$sql = "select * from STOK where barkodu=?";
$rs = ibase_query($sql, $barkodu);

另请参见

如果您的问题是如何从表单发布中获取参数,那么我建议您查看How to get input field value using PHP,或搜索有关如何使用PHP获取表单值的教程;但是,这是一个与Firebird(或MySQL)没有直接关系的问题。