gpt4 book ai didi

php - 使用单引号或双引号插入或发布数据时出现问题

转载 作者:行者123 更新时间:2023-11-29 06:17:23 26 4
gpt4 key购买 nike

对 mysqli/php 还是很陌生,正在构建一个数据输入表单。当我发布数据然后返回查看时,只要有单引号 (') 或双引号 ("),它就会向下显示并在其前面加一条斜杠。

例如,如果我插入哈德良长城,它会返回并显示为哈德良长城。如何让它按照最初的预期显示。

此外,每次我更新它时,它都会添加更多斜杠。所以我第一次更新Hadrian's Wall,就变成了Hadrian's Wall。第二次变成哈德良长城,第三次变成哈德良长城,以此类推。

我的post.php文件代码是:

<?php

define('DB_SERVER', "*****");
define('DB_USER', "*****");
define('DB_PASSWORD', "*****");
define('DB_TABLE', "*****");

// The procedural way
$mysqli = mysqli_connect(DB_SERVER, DB_USER, DB_PASSWORD, DB_TABLE);
$mysqli->set_charset("utf8");
$mysqli->query("SET NAMES 'utf8'");

if (mysqli_connect_errno($mysqli)) {
trigger_error('Database connection failed: ' . mysqli_connect_error(), E_USER_ERROR);
}

$lvmID = $_POST['lvmID'];
$toestelID = $_POST['toestelID'];
$toestel = $_POST['toestel'];
$erlr = $_POST['erlr'];
$inschrijvingnmr = $_POST['inschrijvingnmr'];
$status = $_POST['status'];
$cn = $_POST['cn'];
$ln = $_POST['ln'];
$delivered = $_POST['delivered'];
$vliegtuignaam = $_POST['vliegtuignaam'];
$became = $_POST['became'];
$vorigeLVMID = $_POST['vorigeLVMID'];
$vorigeInschrijv = $_POST['vorigeInschrijv'];
$firstflight = $_POST['firstflight'];
$engines = $_POST['engines'];
$configuratie = $_POST['configuratie'];
$remark = $_POST['remark'];
$specialekleuren = $_POST['specialekleuren'];
$fleetnmr = $_POST['fleetnmr'];
$inactive = $_POST['inactive'];
$exitdate = $_POST['exitdate'];
$beeld = $_POST['beeld'];
$beeld_linkje = $_POST['beeld_linkje'];
$beeld_copyright = $_POST['beeld_copyright'];
$photouse_approve = $_POST['photouse_approve'];
$photouse_approve_date = $_POST['photouse_approve_date'];
$beeld_comment = $_POST['beeld_comment'];
$seatmap = $_POST['seatmap'];
$id = $_POST['id'];

$sql = "
UPDATE tbl_vliegtuiggegevens SET lvmID=?, toestelID=?, toestel=?, erlr=?, inschrijvingnmr=?, status=?, cn=?, ln=?, delivered=?, vliegtuignaam=?, became=?, vorigeLVMID=?, vorigeInschrijv=?, firstflight=?, engines=?, configuratie=?, remark=?, specialekleuren=?, fleetnmr=?, inactive=?, exitdate=?, beeld=?, beeld_linkje=?, beeld_copyright=?, photouse_approve=?, photouse_approve_date=?, beeld_comment=?, seatmap=? WHERE vliegtuiggegevenID=?";
if(!($stmt = $mysqli->prepare($sql)))
{
die("Unable to prepare statement");
}
else
{
$stmt->bind_param("iisssssssssisssssssissssssssi", $lvmID, $toestelID, $toestel, $erlr, $inschrijvingnmr, $status, $cn, $ln, $delivered, $vliegtuignaam, $became, $vorigeLVMID, $vorigeInschrijv, $firstflight, $engines, $configuratie, $remark, $specialekleuren, $fleetnmr, $inactive, $exitdate, $beeld, $beeld_linkje, $beeld_copyright, $photouse_approve, $photouse_approve_date, $beeld_comment, $seatmap, $id);
if($stmt->execute())
{
echo "Successfully updated";
}
else
{
die("Update failed");
}
}

mysqli_close($mysqli);

?>

在我用来输入数据的表单页面上,其中一个表单字段的代码是:

 <input type="text" name="vliegtuignaam" size="40" value="<? echo   
"$row[vliegtuignaam]"?>">

在显示页面上,同样的显示字段是:

 <td><strong>Vliegtuignaam: </strong></td>
<td><? echo "$row[vliegtuignaam]"?></td>

当我尝试类似的东西时,它只会输出 stripslashes(Hadrian\'s Wall) 而不是 Hadrian's Wall。

最佳答案

"When I try something like it just outputs stripslashes(Hadrian\'s Wall)"

您可能尝试做的是 <td><? echo "stripslashes($row[vliegtuignaam])"?></td>这是不正确的。

这就是它向您显示函数名称的原因,因为该函数是在引号内设置的。

你需要使用的是:

<td><? echo stripslashes($row['vliegtuignaam']);?></td>

<td><? echo stripslashes($row[vliegtuignaam]);?></td>

如果数组中的引号给你带来了困难。

根据手册中的示例 http://php.net/manual/en/function.stripslashes.php

echo stripslashes($str);

完整示例:

<?php
$str = "Is your name O\'reilly?";

// Outputs: Is your name O'reilly?
echo stripslashes($str);
?>

作为另一种选择,您可以做的是使用 stripslashes()在它到达查询之前在变量上。

$str = "Is your name O\'reilly?";

$newstring = stripslashes($str);

然后继续插入。

关于php - 使用单引号或双引号插入或发布数据时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35104002/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com