gpt4 book ai didi

php 在连接字符串以生成 mysql 查询时添加斜杠

转载 作者:行者123 更新时间:2023-11-28 23:43:09 24 4
gpt4 key购买 nike

这是为什么:

$query = "SELECT Used, Date FROM table WHERE Name = '".$name."'";

制作这个:

'SELECT Used, Data FROM table WHERE Name =\'name_value\''

我检查了 php.ini 并且:

magic_qoutes_gpc = off
magic_quotes_sybase = off
magic_quotes_runtime = off

编辑:

变量 $name 通过 jquery post 来自 select(下拉菜单)元素:

$.ajax({
type: "POST",
url: "chart_handler.php",
data: {'volumeName': $('select[name="Volumes"] option:selected').val()},
success: function (results){
//console.log(results);
alert(results);
plotVolumeChart(results);
}
});

chart_handler.php 中我有:

if (isset($_POST['volumeName'])){

$name = $_POST["volumeName"];

// The usual mysql connection stuff, then:

$query = "SELECT `Used`, `Date` FROM `volumes2` WHERE `Name` = '".$name. "'";

用于调试以及我看到添加斜杠的地方:

    file_put_contents( 'output_debug_sql' . time() . '.log', var_export( $query, true));

最佳答案

我尝试重现您的问题,似乎 var_export 正在生成反斜杠,因为它只是用单引号将输出字符串包装起来,如下所示:

var_export( $query);

输出:

'SELECT `Used`, `Date` FROM `volumes2` WHERE `Name` = \'test\''

但是如果你回显变量:

$query = "SELECT `Used`, `Date` FROM `volumes2` WHERE `Name` = '".$name. "'";

echo $query;

这将是输出:

SELECT `Used`, `Date` FROM `volumes2` WHERE `Name` = 'test'

这完全符合预期。我在您的代码中注意到的另一点是您不需要添加转义引号 (`),因此以下查询应该可以完成这项工作:

SELECT Used, Date FROM volumes2 WHERE Name = 'test';

我建议在代码中使用查询之前,在 phpmyadminMySql Workbench 中仔细检查您的查询,以确保没有遗漏任何内容。

我确实没有发现 jQuery 部分有任何问题,并且作为概念实现的证明,以下代码段 (test.php) 在执行 AJAX 请求并打印结果时不应生成任何反斜杠:

<html>
<head>
<script src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
</head>
<body>

<?php

if (isset($_POST['volumeName'])){
$name = $_POST["volumeName"];
$query = "SELECT `Used`, `Date` FROM `volumes2` WHERE `Name` = '".$name. "'";
echo $name."<br>";
die();
}

?>


<select name="Volumes">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="opel">Opel</option>
<option value="audi">Audi</option>
</select>

<div id="result">
</div>

<a href="javascript:submit_onclick()">Submit</a>

<script>

function submit_onclick()
{
$.ajax({
type: "POST",
url: "index.php",
data: {'volumeName': $('select[name="Volumes"] option:selected').val()},
success: function (results){
//console.log(results);
$("#result").html(results);
}
});
}

</script>

</body>
</html>

所以尝试:

  1. 删除转义引号 (```) 并查看您的问题是否已解决。
  2. 用双引号 (") 而不是单引号 (') 包裹您的查询,这样 var_export 就不必吐出反斜杠。按如下方式操作:

    $query = 'SELECT Used, Date FROM volumes2 WHERE Name = "'.$name. '"';

祝你好运

关于php 在连接字符串以生成 mysql 查询时添加斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34030564/

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