首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不带mysqli或PDO的PHP预准备语句

问不带mysqli或PDO的PHP预准备语句
EN

Stack Overflow用户
提问于 2013-03-05 07:27:34
回答 2查看 1K关注 0票数 2

在PHP中是否可以使用使用过时的mysql扩展的预准备语句?我有一个服务器,这将不会很快得到mysqli或PDO,并需要做RLIKE查找用户提供的文本。将使用mysql_real_escape_string(),但我担心这是不够的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-05 08:11:17

下面是一个PHP脚本,它使用了过时的mysql API,演示了如何使用准备和执行。我用PHP5.3.15和MySQL 5.5.29测试了这一点,它对我很有效。但是,我不推荐这样做。

代码语言:javascript
复制
<?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级别的准备和执行。

票数 2
EN

Stack Overflow用户

发布于 2013-03-05 07:31:35

看看这个:http://dev.mysql.com/doc/refman/5.0/en/sql-syntax-prepared-statements.html

这里有用于手动绑定参数的预准备语句的SQL语法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15213110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档