MySQL将变量传递给动态查询

时间:2010-10-13 10:28:29

标签: php mysql

对不起,如果这是一个基本问题! 到目前为止,我一直在php中创建mysql查询并在sql调用中传递变量,如下所示:

$myparam = $_GET["id_tbl"];

mysql_select_db($database_camerich, $camerich);
$query_rs_table = sprintf("SELECT * FROM table_tbl WHERE idimg_tbl = ".$myparam." ORDER BY order_tbl ";
$rs_table = mysql_query($query_rs_table, $camerich) or die(mysql_error());
$row_rs_table = mysql_fetch_assoc($rs_table);
$totalRows_rs_table = mysql_num_rows($rs_table);

我已经设法在服务器上创建了这个作为table_view(没有过滤器),我能够将其恢复正常。

mysql_select_db($database_camerich, $camerich);
    $query_rs_table = sprintf("SELECT * FROM table_view";
    $rs_table = mysql_query($query_rs_table, $camerich) or die(mysql_error());
    $row_rs_table = mysql_fetch_assoc($rs_table);
    $totalRows_rs_table = mysql_num_rows($rs_table);

我可以过滤这个:

$query_rs_table = sprintf("SELECT * FROM table_view WHERE idimg_tbl = ".$myparam."";

我想知道如何在服务器上动态设置查询过滤器,而不是在返回查询后在php中过滤结果。

我希望这是有道理的。

感谢

1 个答案:

答案 0 :(得分:1)

以下是一些建议,希望您能按顺序尝试:

  1. 切换到使用PDO进行数据库访问 - PDO是一种更现代的数据库访问接口,它是面向对象的。它还支持预备语句。 - http://www.php.net/manual/en/book.pdo.php
  2. 将视图切换到存储过程。 MySQL视图不带参数。视图还有其他限制,如下所示:http://dev.mysql.com/doc/refman/5.1/en/create-view.html。存储过程接受参数,可以通过PDO调用:http://php.net/manual/en/pdo.prepared-statements.php
  3. 如果你说的话,你应该真的评估你是否真的 需要存储过程。