如何在phpmyadmin中运行PDO预处理语句(带有命名占位符)?

时间:2014-04-09 22:34:37

标签: php mysql pdo phpmyadmin prepared-statement

我做这样的事情的日子已经一去不复返了 WHERE something = '".$query->real_escape_string($your_unsafe_value_here)."'

所以我已经转向准备好的陈述,但我现在对如何调试我的一些查询感到有些困惑。这是一个使用命名占位符的PDO预处理语句示例。我从在线php手册中得到了这个:

/* Execute a prepared statement by binding PHP variables */
$calories = 150;
$colour = 'red';
$sth = $dbh->prepare('SELECT name, colour, calories
                      FROM fruit
                      WHERE calories < :calories AND colour = :colour');
$sth->bindParam(':calories', $calories, PDO::PARAM_INT);
$sth->bindParam(':colour', $colour, PDO::PARAM_STR, 12);
$sth->execute();

如果我需要对查询进行快速测试,如何在 phpmyadmin 中运行类似的内容? (...还是有另一个可以轻松处理这些类型查询的mysql GUI?)

3 个答案:

答案 0 :(得分:1)

可以在Toad for MySQL中运行查询。当您运行查询时,会弹出一个输入变量

答案 1 :(得分:0)

你不能直接在phpMyAdmin中运行PDO查询,我不知道任何其他程序可以做到这一点。您可以通过将代码从表单写入文件并在de background中激活该代码来构建自己的代码。但这不是很安全,因为你可以在那里运行任何东西

答案 2 :(得分:0)

对于我的设置,这是我最终做的。希望这个解决方案能够帮助其他人,无论我的设置细节如何......

1)我打开了my.ini文件中的查询记录(我正在使用Windows / WAMP):

[mysqld]

log = "C:\wamp\logs\queries.log"

2)我需要告诉PDO emulate prepared statements(我正在使用Laravel 4.1):

// Before you run the query...
 $pdo = DB::connection()->getPdo();
 $pdo->setAttribute(\PDO::ATTR_EMULATE_PREPARES , true);    
// run query here...
// and then die, so it's the last query ran
die();

3)在记事本++中打开 queries.log 文件,并在记事本++提示时重新加载文件。复制&amp;将最后一个查询粘贴到phpmyadmin中。现在我可以调试查询了!

我可能稍后会想出一种更自动化的方法,但这似乎暂时有效。