簡體   English   中英

如何在phpmyadmin中運行PDO准備好的語句(帶有命名的占位符)?

[英]How to run a PDO prepared statement (with named placeholders) in phpmyadmin?

我做這樣的事情的日子已經一去不復返了:
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?)

可以在Toad for MySQL中運行查詢。當您運行查詢時,將彈出一個窗口以輸入變量

您不能直接在phpMyAdmin中運行PDO查詢,而且我不知道其他任何程序可以做到這一點。 您可以通過將代碼從表單寫入文件並在后台執行代碼來構建自己的代碼。 但這不是很安全,因為您可以在那里運行任何東西

對於我的設置,這就是我最終要做的。 希望無論我的設置詳細信息如何,該解決方案都可以幫助其他人。

1)我在my.ini文件中打開了查詢日志記錄(我使用Windows / WAMP):

[mysqld]

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

2)我需要告訴PDO 模擬准備好的語句 (我使用的是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)保持query.log文件在notepad ++中打開,並在notepad ++提示時重新加載該文件。 將最后一個查詢復制並粘貼到phpmyadmin中。 現在我可以調試查詢了!

稍后我可能會想出一種更自動化的方法,但這似乎暫時可行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM