Php 如何在MySQL字段中存储和检索冒号(:)?
我只是尝试在MySQL表中存储URI。当我检索到它时“:”消失了。所以变成了http//www.example.com我已经研究过了,有很多解决方案;(分号),(逗号),引号等,但不用于冒号 我尝试过http\://www.xyz.com(没有空格),但这将转换为http://www.example.com我正在使用php。有什么建议吗 您确实不需要代码来理解这个问题,但由于人们坚持,甚至反对,下面是代码:Php 如何在MySQL字段中存储和检索冒号(:)?,php,mysql,escaping,colon,Php,Mysql,Escaping,Colon,我只是尝试在MySQL表中存储URI。当我检索到它时“:”消失了。所以变成了http//www.example.com我已经研究过了,有很多解决方案;(分号),(逗号),引号等,但不用于冒号 我尝试过http\://www.xyz.com(没有空格),但这将转换为http://www.example.com我正在使用php。有什么建议吗 您确实不需要代码来理解这个问题,但由于人们坚持,甚至反对,下面是代码: <?php $id = $_GET["id"]; $conn = new mysq
<?php
$id = $_GET["id"];
$conn = new mysqli($servername, $username, $password, $dbname); //security parameters not shown
$sql = "SELECT * FROM uri WHERE myURI='" . $id . "'";
$result = $conn->query($sql);
if ($result) {
$row = $result->fetch_assoc();
if ($row) {
$SendTo = $row["SendTo"];
header("Location: " . $SendTo);
}
}
?>
使用该函数可以避开斜杠并安全地存储在数据库中
例如
$url = "http://www.example.com";
$safeURL = mysqli_real_escape_string($url);
然后使用SQL中的$safeURL
var来存储。您只是将URI存储到db列中吗?如果是,则在PHP中验证URL并直接将URL存储到字段类型为varchar
或text
的列中,不要转义它,只需在PHP中验证它并直接存储它。如果URL无效,执行上述操作将为您提供额外的URL检查。返回错误或正常保存。我在存储URI时正在验证它。这不是问题所在-当我检索URI时,我丢失了冒号。您必须使用addslashes()
函数进行保存。删除它。我们希望看到一些代码。我没有使用addslashes@normal。我的问题是冒号而不是斜杠。我尝试过这个解决方案,但它对我不起作用。@Chiwda所有符号都将用斜杠转义,使用此函数您将得到预期的结果。您测试过吗?请不要推荐mysql\u real\u escape\u string()
。如果开发人员仍在使用mysql\uu
函数,那么是时候升级到mysqli\u
了。如果它们需要转义或正在处理用户提供的/不安全的数据,则可以使用带有占位符的预处理语句。@MehulV。回到这个问题上,这一次使用您的解决方案是有效的。我有另一个错误,阻止它工作。我已经接受并投了赞成票。