我做这样的事情的日子已经一去不复返了
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?)
答案 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中。现在我可以调试查询了!
我可能稍后会想出一种更自动化的方法,但这似乎暂时有效。