0

我一直在尝试将一个包含逗号的变量插入到 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;

结果是 test,带逗号,但列中的数据只是 test WITH NO COMMA。请帮忙。谢谢。

编辑:你的常识修复了它,显然我需要在 '$variable2' 周围加上括号,所以它就像:

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

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

4

3 回答 3

2

嗯,答案很简单。

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

测试用例是指涉及有问题的行为的代码,仅此而已。除了插入和获取之外,没有一行代码:

$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]);

运行它,用逗号查看所有内容,然后在您自己的代码中搜索逗号修剪代码

或者您可能只是在表格中没有逗号进行测试,并且一直选择这个,而不是带逗号的。

或任何类似的愚蠢错误

于 2013-10-24T19:39:53.577 回答
-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 时,您可以填充孔,然后可以执行。

这有几个优点:

  • 这是安全的
  • 您可以重复使用您的语句
  • 它比字符串插值更容易
于 2013-10-24T19:09:05.013 回答
-2

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

于 2013-10-24T19:01:02.017 回答