在其中插入带逗号的变量到SQL数据库?

时间:2013-10-24 18:56:39

标签: php sql mysqli

我一直在尝试将一个带逗号的变量插入SQL数据库大约30分钟左右。我已经回显了变量,逗号就在那里,但是当它插入时,就没有逗号了! 示例(像我的一些代码):

$variable1 = "test";
$variable2 = "$variable1,";
$sql1 = "INSERT INTO table (`column`) VALUES ('$variable2')";
$query1 = mysqli_query($con,$sql1); //I dont think I need to put a con variable up there for an example code

当我这样做时:

echo $variable2;

结果是使用逗号测试,但列中的数据只是测试WITH NO COMMA。 请帮忙。 感谢。

编辑: 你的常识修正了它,显然我需要围绕'$ variable2'的括号,所以它就像:

    $sql1 = "INSERT INTO table (`column`) VALUES (('$variable2'))";

感谢您的常识和其他所有尝试过的人!

3 个答案:

答案 0 :(得分:2)

嗯,答案很简单。

您自己的代码会在插入之前或之后删除此逗号。
如果您想编写一个可重现的测试用例,您将看到没有人使用您的逗号。

测试用例是指涉及相关行为的代码,没有别的。在insert和fetch旁边没有一行代码:

$variable1 = "test";
$variable2 = "$variable1,";
$sql1 = "INSERT INTO users (username) VALUES ('$variable2')";
mysqli_query($db,$sql1);

$sql2 = "SELECT username FROM users WHERE username ='$variable2'";
$res  = mysqli_query($db,$sql2);
$row  = mysqli_fetch_row($res); 
var_dump($variable1, $variable2, $sql1, $sql2, $row[0]);

运行它,使用逗号查看全部,然后搜索自己的代码以获取逗号修剪代码

或者你可能只是在表中没有逗号测试,并且一直选择这个,而不是用逗号选择。

或类似的任何愚蠢错误

答案 1 :(得分:-1)

试试这样:

$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'world');

$stmt = $mysqli->prepare("INSERT INTO table ('column') VALUES (?)");
$stmt->bind_param($variable2);

/* execute prepared statement */
$stmt->execute();

这更安全,不会引发这种奇怪的现象。 (这是一个字吗?)

这里发生的是,查询被发送到sql数据库并返回一个语句。声明中有一些漏洞,其中包括?。 使用bind_param时,填充漏洞然后就可以执行了。

这有几个好处:

  • 很安全
  • 您可以重复使用您的陈述
  • 比字符串插值更容易

答案 2 :(得分:-2)

尝试"INSERT INTO table ('column') VALUES ('" . $variable2 . "');"