我有一个问题,让选择子查询工作UPDATE.我正在尝试以下内容:
UPDATE foo
SET bar=bar-1
WHERE baz=
(
SELECT baz
FROM foo
WHERE fooID='1'
)
Run Code Online (Sandbox Code Playgroud)
foo具有主键的表名称在哪里fooID.bar并且baz是INT类型.执行此操作时,我收到以下错误:
Error: A query failed. You can't specify target table 'foo' for update
in FROM clause
Run Code Online (Sandbox Code Playgroud) 我正在研究遗传算法项目,我用二进制字符串编码我的染色体,每个32位代表一个值.问题是我正在优化的函数有超过3000个参数,这意味着我的位字符串中有超过96000位,而我对此进行的操作只是为了减慢...
我进行了如下操作:我有一个二进制类,我正在创建一个表示我的大二进制字符串的布尔数组.然后我用各种移动和移动等操纵这个二进制字符串.
我的问题是,有更好的方法吗?速度只是杀戮.我敢肯定,如果我只在一个字符串上执行此操作会很好,但我必须对超过1000代的25位字符串进行操作.
我正在阅读网络安全性,一个明显的主题是SQL注入.我正在尝试建立一个基本的php页面,我可以在其中执行sql注入(它是一个本地服务器).但是,似乎我的代码(或服务器)自动转义单引号.这是一个新标准还是我的服务器上激活了一个我不知道的设置?是否需要清理输入?
这是我的服务器端代码的示例:
$foo = $_POST['foo'];
$sql = "SELECT * FROM bar WHERE foo='" . $foo . "'";
connectoTo("database");
query($sql);
Run Code Online (Sandbox Code Playgroud)
其中connectTo()连接到数据库服务器并选择数据库,query()是执行查询时使用的常用过程.什么都没有清洁.但是,当我发送时
$_POST['foo'] = "' OR 1=1 #"
Run Code Online (Sandbox Code Playgroud)
php页面收到这个
$_POST['foo'] = "\' OR 1=1 #"
Run Code Online (Sandbox Code Playgroud)
所以foo已经逃脱了?这与$ _GET相同.
有什么想法吗?我们不再需要清理用户输入了吗?
干杯
埃里克
我想返回多个数组,然后将它们分开.
function cal(){
$st1=array('1','2');
$st2=array('1','2');
return $st1."-".$st2;
}
Run Code Online (Sandbox Code Playgroud)
叫它
$mainstring=explode("-",cal())
print_r($mainstring[0]);
print_r($mainstring[1]);
Run Code Online (Sandbox Code Playgroud)
我想获得$ st1和$ st2的原始数组.
请帮忙.