是否可以在PHP中使用使用已弃用的mysql扩展的预准备语句?我有一台服务器不会很快得到mysqli或PDO,需要对用户提供的文本进行RLIKE查找。 mysql_real_escape_string()将被使用,但我担心它会不够。PHP准备好的语句没有mysqli或PDO
2
A
回答
2
下面是一个PHP脚本,使用不推荐的mysql API,它演示了使用PREPARE和EXECUTE。我用PHP 5.3.15和MySQL 5.5.29测试了它,它适用于我。但是,我不推荐它。
<?php
$x = 3;
$y = 4;
mysql_connect('localhost', 'root', 'xxxx') or die(mysql_error());
mysql_select_db('test');
mysql_query("SET @sql = 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse'");
mysql_query("PREPARE stmt FROM @sql");
mysql_query("SET @x = $x"); // SQL injection!
mysql_query("SET @y = $y"); // SQL injection!
$result = mysql_query("EXECUTE stmt USING @x, @y");
while ($row = mysql_fetch_assoc($result)) {
print $row["hypotenuse"] . "\n";
}
mysql_close();
正如我在评论中指出,这种失误的准备查询的点,因为你要可能不被信任的内容进行插值到您的SET语句。
您确实应该修复您的PHP安装并启用mysqli或PDO_mysql扩展,以便您可以使用真正的API级别准备和执行。
0
看看这个: http://dev.mysql.com/doc/refman/5.0/en/sql-syntax-prepared-statements.html
你必须有与手动PARAM结合预处理语句的SQL语法。
+0
downvoter可以评论他们为什么不同意吗? – jerrygarciuh 2013-03-04 23:40:57
相关问题
- 1. MySQLi准备好的语句?
- 2. 准备好的MySQLi语句
- 3. SphinxQL使用php mysqli/pdo并准备好语句
- 4. PHP MySQLi multi_query准备语句
- 5. PHP PDO准备语句
- 6. MySQLi准备好的语句和事务
- 7. PDO准备语句
- 8. PDO和PHP/MySQL:PDO准备好的语句有什么问题?
- 9. PHP PDO - 输出准备的语句
- 10. PHP在准备好的语句中准备了语句
- 11. 结合LIKE并在PHP的MySQLi准备好的语句
- 12. 准备了mysqli语句
- 13. MySQLi无法准备语句
- 14. Mysqli更新准备语句
- 15. PHP PDO准备更新语句,其中=
- 16. PHP PDO MySQL count()准备语句
- 17. PHP PDO更新准备好的语句问题
- 18. 缓存PDO准备语句
- 19. PDO准备语句参数
- 20. MYSQL-PDO准备语句
- 21. php mysqli准备好声明
- 22. PHP PDO准备where子句
- 23. 了解PHP准备好的语句
- 24. PHP和MySQL准备好的语句
- 25. PHP准备好的语句返回-1
- 26. PHP准备好的语句与数组
- 27. PHP SQL更新语句转换为(PDO)准备语句
- 28. MySQLi没有返回JOIN准备语句的结果
- 29. 有条件的准备语句PHP mysqli,减少
- 30. MySQL准备好的语句
您使用的PHP版本的年龄?没有mysqli?它是在5.0版本的php中引入的,对于PDO也是一样(没有标准,但是从那以后可以轻松安装)。 – 2013-03-04 23:29:00
这是服务器上的糟糕情况。明年有计划获得一个标准的LAMP盒子并将他们的旧代码迁移到PDO,但目前系统管理员表示FreeBSD有几个版本过期,他不愿意尝试升级或重新编译任何东西,以免破损。 – jerrygarciuh 2013-03-04 23:34:34
在用户空间中,对于PHP4.x和更早的5.0版本,有一个PDO重新实现。见http://xpdo.org/或http://ge.tt/44rtW5a/v/0 – mario 2013-03-04 23:35:56