我正在努力确保我的Wordpress代码可以安全地从SQL注入中尝试使用$ wpdb-> prepare()来确保这一点。但是,它似乎没有正常运作。
我正在练习的代码从同一服务器上的不同SQL数据库中提取数据(即不是从wordpesss数据库中提取)。我使用的代码是:
$mydb = new $wpdb('databese_username','password','datbasename', 'host');
$id = 2;
$users = $mydb->get_results( $mydb->prepare("SELECT table.column
FROM table.column
INNER JOIN table ON table.column = table.column
WHERE table.column = %d",$id));
这对于获取数据很好,但是不清楚prepare()是否正常工作,并且如果以其他方式使用则会停止sql注入。我担心的是我可以轻松地将$ id更改为字符串(即$ id =“2”;),代码仍然可以获取我的数据。不应该准备停止工作吗?
如何在使用外部数据库时正确使用准备工作?是$ mydb-> prepare()还是应该是$ wpdb-> prepare()还是别的什么?
谢谢
答案 0 :(得分:0)
你必须已经与wordpress数据库连接。所以你不需要连接到数据库..你可以使用全局$ wpdb;
global $wpdb;
$id = 2;
$users = $wpdb->get_results("SELECT table.column
FROM table.column
INNER JOIN table ON table.column = table.column
WHERE table.column = %d",$id);