繁体   English   中英

如何使用PHP从MySQL中获取所有带有撇号的数据

[英]How to get all data from MySQL with apostrophe in it using PHP

我试图从具有萎缩的MySQL记录中提取数据。 它带有反斜杠和其余的字符串缺失。 相信我,我搜寻了互联网,到目前为止没有任何工作。 我一定太累了,它就在我眼前。 见下面的代码......

$sql = "SELECT * FROM ".$tbl."  WHERE FIELD_NO = ".$order_no." ORDER BY LINE_NO ASC";
    $rs_result = $conn->query($sql); 

while($row = $rs_result->fetch_assoc()) {

$addl_info = mysqli_real_escape_string($conn, $row['ADDL_INFO']); //tried this

echo "<td class='col32'><input name='addl_info[]' class='addl_info' type='text' value='".$addl_info."'></td>";

mysql存储的数据是“ 20的带”,它输出为“ 20的带”,缺少“ s”。 我尝试了所有我能想象的东西,但仍然无法使用PHP返回我的完整数据字符串。 我使用mysqli_real_escape_string()来获取带撇号的数据,但是现在我无法使用撇号和其后的文本来获取数据。

我计划使用这个特定项目来迁移到PDO,但是直到现在我需要一个修复程序。 学习和完成PDO需要一些时间。

您将值用单引号引起来,这行不通:

value='Band of 20's'

看到问题了吗? 浏览器将如何知道哪个是引号和哪个是引号?

您需要将引号转换为HTML实体&#039;

echo "stuff value='".htmlentities($row['ADDL_INFO'], ENT_QUOTES)."' stuff";

或使用双引号(但您仍应转换HTML实体):

echo "stuff value=\"{$row['ADDL_INFO']}\" stuff";
//or
echo 'stuff value="'.$row['ADDL_INFO'].'" stuff';

像你这样在字符串上运行mysqli_real_escape_string()会转义某些字符:

$addl_info = mysqli_real_escape_string($conn, $row['ADDL_INFO']);

您只需要检索返回的值:

$addl_info = $row['ADDL_INFO'];

另外,出于安全原因(SQL注入的风险),请确保通过准备好的语句运行查询。 您可以在此处找到有关此操作的信息: http//php.net/manual/en/mysqli.quickstart.prepared-statements.php

从broswer,PHP my Admin或类似的方式访问SQL ...当您看到您的表和所有其他选项卡转到SQL时。 它就像一个可以尝试代码的测试环境。 有一些预设,如“从表中选择*”等。你可以看到如何在SQL中编写撇号。 我认为它会对你有所帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM