我一直在尝试将一个带逗号的变量插入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'))";
感谢您的常识和其他所有尝试过的人!
答案 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 . "');"