我有两个表,并希望更新LEFT JOIN中所有行的T1字段.
举一个简单的例子,更新以下结果集的所有行:
SELECT T1.* FROM T1 LEFT JOIN T2 ON T1.id = T2.id WHERE T2.id IS NULL
Run Code Online (Sandbox Code Playgroud)
在MySQL手册指出:
多表UPDATE语句可以使用SELECT语句中允许的任何类型的连接,例如LEFT JOIN.
但是我在文档化的多表UPDATE中找不到正确的语法.
什么是正确的语法?
简而言之,我有一个字段,其中最右边的数字是最重要的.(当然,这个领域来自我们的附属公司的系统,基于他们的主键,所以最左边的数字每个时期只改变一次!)
每个人都知道CSS提供了一个右截断"text-overflow:ellipsis;".如何(没有向服务器添加代码以通过字符串手术准备该字段)我们是否截断LEFT上的字段,并将"..."elipses放在LEFT上?
(CSS3没问题.)
我正在创建一个网站,我正在尝试决定如何加密用户密码以将它们存储在SQL数据库中.
我意识到使用简单的md5(密码)是非常不安全的.我正在考虑使用sha512(password.salt),我一直在研究生成有用盐的最佳方法.我阅读了很多文章,说明盐应该尽可能随机地添加熵到哈希,这看起来是个好主意.但:
在数据库中哈希旁边的怪异外观值是不是很明显?如果攻击者可以使用哈希值访问salt,那么它更安全吗?
任何人都有该领域的专业知识?谢谢!
我正在尝试在php.ini中进行一系列更改之后使工作成为upload_progress会话,如:
session.upload_progress.enabled = On
;session.upload_progress.cleanup = On
session.upload_progress.prefix = "upload_progress_"
session.upload_progress.name = "123"
session.upload_progress.freq = "1%"
session.upload_progress.min_freq = "1"
Run Code Online (Sandbox Code Playgroud)
并创建基于html的页面,并使用表单提交文件:
<form action="upload_progress.php" method="POST" enctype="multipart/form-data">
<input type="hidden" name="<?php echo ini_get("session.upload_progress.name"); ?>" value="123" />
<input type="file" name="file1" />
<input type="file" name="file2" />
<input type="submit" />
</form>
Run Code Online (Sandbox Code Playgroud)
然后正确上传文件的服务器端脚本:
session_start();
move_uploaded_file($_FILES['file1']['tmp_name'], './uploads/'.$_FILES['file1']['name']);
move_uploaded_file($_FILES['file2']['tmp_name'], './uploads/'.$_FILES['file2']['name']);
print_r($_SESSION);
Run Code Online (Sandbox Code Playgroud)
$_SESSION
虽然文件上传正确完成,但全局变量中有一个空数组.会话设置有什么问题?
我使用的是PHP 5.4.5
Notice: Undefined index: upload_progress_123 in C:\apache\localhost\www\upload_progress.php on line 13
我正在使用wamp来运行,但是我在运行时收到了这个警告:
警告:fsockopen()[function.fsockopen]:无法连接到tls://smtp.gmail.com:465(无法找到套接字传输"tls" - 您是否忘记在配置PHP时启用它?)in第24行的C:\ wamp\www\mail\testemail.php无法找到套接字传输"tls" - 您是否忘记在配置PHP时启用它?
我试图通过请求获得正确的编码.
request.get({
"uri":'http://www.bold.dk/tv/',
"encoding": "text/html;charset='charset=utf-8'"
},
function(err, resp, body){
console.log(body);
}
);
Run Code Online (Sandbox Code Playgroud)
无论我做什么,丹麦字符的编码都是不对的.
有什么想法吗?
我目前正致力于网站的本地化,这是第一个仅限英语的网站.第三方公司进行了翻译,并为我们提供了包含翻译的excel文件.我成功转换为我可以在我的视图中使用的PHP数组.我正在使用Eclipse for Windows来编辑我的PHP文件.
一切都很好,除了我需要在我的字符串中添加变量,例如:
'%1 is now following %2'
Run Code Online (Sandbox Code Playgroud)
在阿拉伯语中我提供了像这样的字符串:
'_______???? ????? _______'
Run Code Online (Sandbox Code Playgroud)
我发现用%1和%2 替换_ _是非常困难的,因为阿拉伯语部分是一个从左到右的字符串,而且%1
,%2
从左到右或从右到左,我不是当然.我几乎没有得到我的参数顺序的结果,因为%1有时会在字符串的左边,有时在右边,这取决于我开始输入的位置.复制粘贴替换字符串也可能具有相同的奇怪效果.
大多数时候我最终会得到一个像这样的字符串:
%2???? ????? %1
Run Code Online (Sandbox Code Playgroud)
%1应位于右侧站点,%2位于左侧站点.%1
显然这被认为是从右到左的字符串,因为%显示在右侧.这%2
被认为是从左到右.
我以前肯定有人这个问题.有没有什么办法可以在Eclipse中轻松完成?或者使用更智能的编辑器来解决阿拉伯问题?或者它可能是一个Windows问题?有解决方法吗?
UPDATE
我也尝试将我的字符串拆分成多个字符串,但这也改变了参数的顺序:
'%1' . '???? ????' . '%2'
Run Code Online (Sandbox Code Playgroud)
更新2
似乎更换替换字符串会让事情变得更好.它可能与阿拉伯字符串中数字的处理方式有关.这个字符串在Eclipse中编辑没有任何问题.参数的顺序是正确的,PHP正确处理字符串:
'{var2} ???? ????? {var1}'
Run Code Online (Sandbox Code Playgroud)
如果没有找到其他解决方案,这可能是一个很好的选择.
我目前正在使用is_resource()
来确定变量是否是一个打开的文件句柄.
这是正确的还是有另一种(更好的)方法来做到这一点?
我有一些运行版本5.1.63的mysql服务器,虽然本周早些时候对奴隶运行了一些查询,但我注意到奴隶上的一些数据本应该使用主服务器上的更新语句删除.
我最初的想法是:
所以,我通过运行mysql show status"table"查询来调查.这是针对每个服务器上的测试数据库运行的,以查看数据长度是多少,在很多情况下,它显示了服务器之间的数据长度不同,但是在眼球上看看数据我可以看到数据是相同,所以我无法使用此方法来查看是否存在任何差异,因为它似乎容易出错.
接下来,我为每个表运行一个简单的(跨所有dbs)行计数,以确认行计数是相同的 - 它是.
然后我开始查看bin日志以进行复制.我可以看到应该在日志中清晰可见的更新语句,但更新从未运行过.
我需要知道的是:
任何帮助表示赞赏.
我正在使用带有FireMonkey的Delphi XE2.
我已经阅读了很多关于MD5的其他问题,但没有找到我的问题的答案...我还测试了不同的脚本来从Delphi生成MD5:
function MD5(const text: string) : string;
var
md5 : TIdHashMessageDigest5;
begin
md5 := TIdHashMessageDigest5.Create;
Result := LowerCase(md5.HashStringAsHex(text, TEncoding.ANSI));
md5.Free;
end;
Run Code Online (Sandbox Code Playgroud)
要么
function MD5(const text: String) : string;
var
md5: IMD5;
begin
md5:= GetMD5;
md5.Init;
md5.Update(TByteDynArray(RawByteString(AnsiString(text))), Length(AnsiString(text)));
Result := LowerCase(md5.AsString);
end;
Run Code Online (Sandbox Code Playgroud)
两者都给我相同的结果......这通常与我在PHP中的结果相同:
$md5 = md5($toencode);
$md5 = hash("md5", $toencode);
Run Code Online (Sandbox Code Playgroud)
但是如果我使用Delphi或PHP,结果是不同的,当我请求其中一个字符的MD5时:"
或者'
可能有其他字符产生不同的结果但我只是在测试期间找到这些字符...
我已经测试了许多扩展的ASCII字符并且具有相同的MD5 ...
所以,我不明白为什么我与它们中的一些("
或'
)存在差异,而且我想知道是否有一种方法可以始终从Delphi生成PHP MD5结果,无论字符是什么.
任何的想法?
例如:
用Delphi:
":b15835f133ff2e27c7cb28117bfae8f4
':3590cb8af0bbb9e78c343b52b93773c9
用PHP:
":3bd864034f446da13581129bb17f9191 …
php ×6
mysql ×3
sql-update ×2
arabic ×1
css ×1
css3 ×1
delphi ×1
delphi-xe2 ×1
eclipse ×1
editor ×1
encoding ×1
firemonkey ×1
hash ×1
md5 ×1
node.js ×1
replication ×1
security ×1
sha ×1
wampserver ×1