如果已经提出这个问题,我很抱歉,我找不到类似我想做的事情。
我正在创建一个使用Steam登录系统的网站。用户将登录,然后他们的详细信息(例如他们的SteamID64及其名称)将存储在数据库中。我遇到的问题是,某些用户(例如我自己)在其用户名中包含单引号。这会阻止下面的SQL查询将其插入数据库并返回错误:
$sql = "INSERT INTO `steam_users` (`SteamID`,`PersonaName`,`Avatar`,`AvatarMedium`,`AvatarFull`) VALUES ('VAR/CHAR(32)', ''naTE'', 'http://steam_avatar_link_here/', 'http://steam_avatar_link_here/', 'http://steam_avatar_link_here/')";
有效的是,一旦信息全部出现,这将是:
$sw = [System.IO.StreamWriter] "d:\temp\output.txt"
$allEnabled = Get-adUser -f { (userAccountControl -eq 512) -and (Enabled -eq $true) } -properties employeeID, emailaddress, GivenName, SurName
$allEnabled | % { $sw.WriteLine("$($_.employeeID), $($_.emailaddress), $($_.GivenName), $($_.SurName)") }
$sw.close()
当然因为我的名字是'naTE'在带有单引号的steam上,这会抛出查询并导致错误。我知道您可以将它们变成三重引号以使用查询插入它们但是当从变量中提取数据时,它无法判断那里是否有引号。
某种数据验证(或者至少我所知道的任何数据验证都太复杂,无法找到引用并用足够的数据替换它们)
有没有办法解决这个问题?
再次,抱歉,如果已经问过这个问题,我只能找到那些没有使用变量并且不了解三重引语的人。我也是PHP的新手,来自C#和VB.net所以请放轻松我:P
谢谢!