【发布时间】:2016-06-10 10:18:59
【问题描述】:
我了解准备好的语句是如何工作的(在函数之外)。但真正让我感到困惑的是准备好的语句如何在类文件的函数中工作。
例如,如果一个prepared statement的用法是:
$dbc->select('SELECT * FROM users WHERE firstname = ?');
但是,我不知道我对用户如何使用 $dbc->select(); 感到困惑。类文件中的函数,创建一个查询,然后使用准备好的语句来执行查询。
会不会像让用户编写查询然后将变量作为另一个参数一样简单,例如:
$dbc->select('SELECT * FROM users WHERE firstname = ?', 'Bob');
或者我会将它作为单独的变量供用户填写,然后将其构建到准备好的语句中,例如:
$dbc->select($columns, $table, $variables = array());
或者这会使事情变得过于复杂?我还可以有另一个选择特定行的函数。
我觉得选项 1 是更好的选择,但它似乎不那么用户友好?还是我只是太累了,以至于我想得太多了?
无论如何,我希望这一切都是有意义的,对于任何错误我深表歉意 - 我在打字的时候差点睡着了!也许是时候结束了。
谢谢, 基隆
【问题讨论】:
-
您的目标是使其更高级,例如查询构建器还是只是标准语句执行和返回的包装器?
-
好吧,我刚起床,我可以解释得更好(因为我不再累了)。我想做的是创建一个数据库类,它将具有常见的 mysqli 函数,如选择、插入、删除、更新等。所以他们会使用我自己制作的函数来查询数据库。我遇到的问题是,当用户进行查询时,我对如何使用准备好的语句感到困惑(我怎么知道哪些列、表等)我在帖子中给出了一些关于我想到的方法的示例,但我不确定它们是否是最佳选择。
-
没有人能解释在 $dbc->select("SELECT * FROM users WHERE id = "); 这样的函数中应该如何使用准备好的语句?
-
你所有的例子在课堂上都是可行的。这一切都可以发挥作用。你的第二个可能是最好的想法。第二个参数是可选的。
-
此外,您还想输入一个数组,而不仅仅是一个值,除非您创建一个 if 条件来处理它,我猜这很容易。
标签: php mysql oop mysqli prepared-statement