这个问题以前没有人问过。上面的链接没有帮助。
当尝试在 URL 中传递 TXTurl 变量时,主题标签之后的所有内容都不会作为变量传递,因为它是一个片段。我正在阅读,它的变量确实以 %23 传递。在它进入数据库之前,我一直在尝试将 # 更改为 %23。
我尝试了 urldecode() urlencode() - 我尝试了我找到的下面的 myUrlEncode 函数。
function myUrlEncode($TXTurl) {
$entities = array('%21', '%2A', '%27', '%28', '%29', '%3B', '%3A', '%40', '%26', '%3D', '%2B', '%24', '%2C', '%2F', '%3F', '%25', '%23', '%5B', '%5D');
$replacements = array('!', '*', "'", "(", ")", ";", ":", "@", "&", "=", "+", "$", ",", "/", "?", "%", "#", "[", "]");
return str_replace($entities, $replacements, urlencode($TXTurl));
}
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// prepare sql and bind parameters
$stmt = $conn->prepare("INSERT IGNORE INTO MyFAQlist (TXTurl, TXTlinkname)
VALUES (:TXTurl, :TXTlinkname)");
$stmt->bindParam(':TXTurl', $TXTurl);
$stmt->bindParam(':TXTlinkname', $TXTlinkname);
myUrlEncode($TXTurl);
// insert a row
$TXTurl = "$TXTurl";
// insert a row
$TXTlinkname = "$TXTlinkname";
$stmt->execute();
将 TXTurl 插入数据库时,我想用 %23 替换 #。
还尝试使用 rawurlencode。ddint'工作
$stmt = $conn->prepare("INSERT IGNORE INTO MyFAQlist (TXTurl, TXTlinkname)
VALUES (:TXTurl, :TXTlinkname)");
$stmt->bindParam(':TXTurl', $TXTurl);
$stmt->bindParam(':TXTlinkname', $TXTlinkname);
$TXTurl = rawurlencode($TXTurl);