Php MYSQL替换字符串不工作

Php MYSQL替换字符串不工作,php,mysql,Php,Mysql,这是我脚本的一部分: $posUnknown=$getpos.'/'; $posKnown=$getpos.'/'.$getblock; $SQL="UPDATE worlds SET blocks=replace(blocks,SUBSTRING(blocks,CHARINDEX('%posUnknown',blocks),CHARINDEX('|',blocks,CHARINDEX('%posUnknown',blocks))-CHARINDEX('%posUnknown',blocks))

这是我脚本的一部分:

$posUnknown=$getpos.'/';
$posKnown=$getpos.'/'.$getblock;
$SQL="UPDATE worlds SET blocks=replace(blocks,SUBSTRING(blocks,CHARINDEX('%posUnknown',blocks),CHARINDEX('|',blocks,CHARINDEX('%posUnknown',blocks))-CHARINDEX('%posUnknown',blocks)),'$posKnown') WHERE name='$getworldname'";
$result=mysql_query($SQL);
我想要它做的是:找到“x10y20z9”,从“x10y20z9”的位置开始找到“|”,从“|”的位置减去“x10y20z9”的位置,找到它的长度,用我得到的新块信息替换该空间中的所有内容

“块”的内容如下所示:

x1y1z1/0 | x10y20z9/800 | x0y1000z90/5 | x4y6z7/1 | x1y100z1/46 |

我想让这个查询做的是,例如,将“x10y20z9/800”替换为“x10y20z9/5”

作为示例,变量可以是: $getpos=“x10y20z9” $getblock=“5” 这样我就可以在那个位置查找块,即使我不知道它的值,我只知道它的位置“x10y20z9”,我不知道“/”后面是什么,但通过这个查询,我认为我能够找到“/”后面的内容,并用我得到的新$getblock替换它,但出于某种原因,它似乎没有任何作用。。。
我知道脚本的这一部分不受SQL注入的保护,但这只是我正在做的一个实验,一旦我看到它起作用,我就会保护它。

如果你使用的是MySQL,为什么你的查询使用SQL Server函数?检查
MySQL\u error
function.MySQL\u error没有给我错误。。。这根本没用