类似这种写法 cmd=new sqlcmd("select * from foo where id=?id",conn)
cmd.addParam("id",123)
rs=cmd.exec()在mysql中如何写? 请注意,要纯粹的参数化查询, 而不是通过字符串连接实现的

解决方案 »

  1.   

    和mysql无关.
    自己写一个封装起来或者运用现成的.其实最终都转化成sql语句,呵呵.
      

  2.   


    举个例子, ado 是跟数据库引擎有关的,不同数据库传参方式不一样(指写法), 至于这种差异是在哪个层次引起的我不太清楚.另外说最终都转化成sql语句,这也不是我要的效果, 举例的话odbc参数化查询的方式就类似于调用存储过程时的传参,
    跟字符串连接方式是不同的
      

  3.   

    其实我要问的主要就是在php中如保实现上面所说那种参数化查询 
      

  4.   

    至于为什么要参数化查询,请看 http://zh.wikipedia.org/w/index.php?title=%E5%8F%83%E6%95%B8%E5%8C%96%E6%9F%A5%E8%A9%A2&variant=zh-cn
      

  5.   

    $query = sprintf("SELECT * FROM Users where UserName='%s' and Password='%s'", 
                      mysql_real_escape_string($Username), 
                      mysql_real_escape_string($Password));
    mysql_query($query);
    或是$db = new mysqli("localhost", "user", "pass", "database");
    $stmt = $mysqli -> prepare("SELECT priv FROM testUsers WHERE username=? AND password=?");
    $stmt -> bind_param("ss", $user, $pass);
    $stmt -> execute();第一个例子最终生成sql语句.
    至于mysqli这个类,如果楼主有意,可以查看一下c++源码.
    至少这个是你所需要的.呵呵.
      

  6.   


    第一个例子在wiki里看到了,放在那里真觉得不太合适第二种是我想要的,相当吻合了