没有mysqli或PDO的PHP编写的语句

没有mysqli或PDO的PHP编写的语句,php,mysql,Php,Mysql,是否可以使用PHP中不推荐使用的扩展来使用准备好的语句?我有一个服务器,它不会很快得到mysqli或PDO,需要对用户提供的文本进行类似RLIKE的查找。将使用mysql\u real\u escape\u string(),但我担心它不够用。看看这个: 这里有用于手动参数绑定的准备语句的SQL语法。这里有一个PHP脚本,使用不推荐的mysql API,演示如何使用PREPARE和EXECUTE。我用PHP5.3.15和MySQL 5.5.29测试了这一点,它适合我。然而,我不推荐它 <

是否可以使用PHP中不推荐使用的扩展来使用准备好的语句?我有一个服务器,它不会很快得到mysqli或PDO,需要对用户提供的文本进行类似RLIKE的查找。将使用mysql\u real\u escape\u string(),但我担心它不够用。

看看这个:


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

这里有一个PHP脚本,使用不推荐的mysql API,演示如何使用PREPARE和EXECUTE。我用PHP5.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();

您使用的php版本有多旧?没有mysqli?它是在php的5.0版本中引入的,PDO也是如此(虽然不是标准版本,但从那时起就可以轻松安装)。这在服务器上是一个糟糕的情况。明年有计划安装一个标准的灯箱,并将他们的旧代码迁移到PDO,但目前系统管理员说FreeBSD有几个版本已经过时,他不愿意尝试升级或重新编译任何东西,因为担心损坏。在userland中有一个PHP4.x和更早的5.0版本的PDO重新实现。再见,马里奥-谢谢!我抓到一本,今晚就玩!