mySQL中的目录路径

mySQL中的目录路径,mysql,sql,case,Mysql,Sql,Case,我试图将一系列“正确”的路径作为字符串传递给mySQL数据库列 由于多个实例可能同时更新,所以我选择使用MySQL的CASE语法,尽管我对它不太熟悉 结果将“0”传递给数据库,而不是字符串 我已经看到了许多使用整数作为例子的例子,但是我需要使用字符串。我想这让我感到悲伤 SO社区能看看问题在哪里吗 下面是上面调试行中的回显SQL: UPDATE linksUpdates SET newTarget = CASE WHEN hitMissed = '/dir/dir/misLink1'

我试图将一系列“正确”的路径作为字符串传递给mySQL数据库列

由于多个实例可能同时更新,所以我选择使用MySQL的CASE语法,尽管我对它不太熟悉

结果将“0”传递给数据库,而不是字符串

我已经看到了许多使用整数作为例子的例子,但是我需要使用字符串。我想这让我感到悲伤

SO社区能看看问题在哪里吗

下面是上面调试行中的回显SQL:

UPDATE linksUpdates

 SET newTarget = CASE 

  WHEN hitMissed = '/dir/dir/misLink1'         THEN newTarget = 'dir/home' 
  WHEN hitMissed = '/dir/dir/misLink2'         THEN newTarget = 'photos' 
  WHEN hitMissed = '/dir/dir/anotherBadLink'   THEN newTarget = 'dir/home' 
  END 
 WHERE misdirect IN (
   '/dir/dir/misLink1',
   '/dir/dir/misLink2',
   '/dir/dir/anotherBadLink'
       )

您的
然后
案例中
语句不需要(或想要)列名。在打开
案例之前,您已经指定了此选项

UPDATE linksUpdates

 SET newTarget = (CASE 

  WHEN hitMissed = '/dir/dir/misLink1'         THEN 'dir/home' 
  WHEN hitMissed = '/dir/dir/misLink2'         THEN 'photos' 
  WHEN hitMissed = '/dir/dir/anotherBadLink'   THEN 'dir/home' 
  END)
 WHERE misdirect IN (
   '/dir/dir/misLink1',
   '/dir/dir/misLink2',
   '/dir/dir/anotherBadLink'
       )

你很容易受到伤害。一旦你了解了这些,你就有希望知道为什么你的查询是错误的。如果没有文本字段,我容易受到SQL注入的攻击吗?注入与你的db字段的类型/数量完全无关,与你如何在查询中包含“外部”数据有关。因此,我将从POST数组中删除数据,对其进行清理,然后提交它。这会改变我所问的问题吗?制造商,我将变量生成器更改为:$assignmentCases.=“当“$key”然后“$value”$assignmentRefs.=“$key”,”;现在它通过了(不会消亡),但不会更新列。有什么想法吗?谢谢你的回答,伊代茨克。但是,括号不起作用。SQL返回了一个错误。想法?我想让你粘贴你得到的实际错误,但我刚刚意识到我很愚蠢。我最初的回答在错误的地方放了一个括号,我没有意识到,但显然你甚至不需要在
案例
周围加括号。相反,您的问题是,在
CASE
语句开始之前,您已经指定了列名,但您正在尝试在
CASE
中声明列名。从技术上讲,您是正确的。我可以这样做:1。在案例旁边添加搜索词:“SET newTarget=CASE hitMissed”,然后添加2。从案例列表中删除搜索词和更新字段:“WHEN'$key'然后'$value'”(需要单引号,“$”php foreach循环中的变量),3。结尾和位置在原文中都很好,没有在我的原文中添加新的括号。我更新了你的答案,结果在该领域是可行的,我将为后代批准这个答案。谢谢你的帮助。