这个问题已经在这里有了答案 :
如何防止PHP中进行SQL注入? (28个答案)
6年前关闭。
我只是在学习数据库,我希望能够存储用户输入。如何使用PHP获取表单数据并将其保存到数据库的基本示例是什么?
也使表单免受SQL攻击。
<form action="sample.php" method="POST">
<input name="sample" type="text">
<input name="submit" type="submit" value="Submit">
</form>
<?php
if (isset($_POST['submit'])) {
$mysqli = new mysqli('localhost', 'user', 'password', 'mysampledb');
/* Check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$stmt = $mysqli->prepare("INSERT INTO SampleTable VALUES (?)");
$stmt->bind_param('s', $sample); // Bind $sample to the parameter
$sample = isset($_POST['sample'])
? $_POST['sample']
: '';
/* Execute prepared statement */
$stmt->execute();
printf("%d Row inserted.\n", $stmt->affected_rows);
/* Close statement and connection */
$stmt->close();
/* Close connection */
$mysqli->close();
}
?>
这是一个非常基本的例子。今天,许多PHP开发人员都在转向PDO。Mysqli并不是过时的,但是PDO 容易 得多 ,恕我直言。
问题内容: 我正在尝试将SQL与Python中准备好的语句一起使用。Python对此没有自己的机制,因此我尝试直接使用SQL: 然后,在循环中: 在循环中,我得到: 这是怎么回事? 问题答案: 例如,在http://zetcode.com/db/mysqlpython/上解释了如何在Python中使用MySQL准备好的语句- 在该页面中查找。 在您的情况下,例如: 然后,将其放入循环中: 无需进一
问题内容: 我只是想知道是否有一种方法可以在MySQL中使用某种形式的预处理语句,这样就不必逃避所有输入,也不必将所有文件从MySQL切换到MySQLi。我真的不相信转义功能,因此,如果在常规MySQL中有任何可行的替代方法,那就太好了。 问题答案: 使用PDO(PHP数据对象)连接到MySQL数据库。此方法将确保所有数据库输入将始终被视为文本字符串,并且您将不必进行任何手动转义。 结合正确使用h
我有一个脚本可以插入大量的数据。此数据主要是前一个insert的复制,但至少有一个值不同。因此,我准备语句并绑定参数以执行和重复。 我现在使用的代码(一次全部大容量插入): 我想要实现的是,数据将用像上面这样的准备好的语句插入,但每个批处理的限制是1000(或任何其他数字)。我不能让这件事发生。我尝试使用和其他方法,但无法使其工作。
问题内容: 在线注册期间,客户可以选择他们选择注册的许多程序。这些程序是三位数的整数,并存储在数组中。 例如: 我想注册Programid 155、165、175和185。 我的数组设置很简单: 当需要将此信息插入关联表时,我还包括注册另一部分的其他元素: 例如,如果我正在执行一个SINGLE程序insert语句,它将看起来如下: 我通常会为上面的数组创建一个简单的循环,该循环将调用sql语句的多
VARCHAR 100 VARCHAR 100 VARCHAR 100 [ID][NAME][NICKNAME][FAVORITE_COLOR] 1约翰·约翰尼·瑞德 我尝试的另一个选择是: 这也不起作用,结果集为空。 最后,我尝试了一个不同的SQL,但它显然是错误的,返回了太多的行(因为它不够严格): 所以我的问题是:如何使用Java PreparedStatement使用MySQL“is nu
问题内容: 我正在尝试向表中插入其他行,该表要求从另一个表中检索一个值。以下是查询示例: 表的结构为。 我知道以上查询是错误的。有没有办法在插入行时从其他表中检索1个值? 问题答案: 一些DBMS会接受以下内容,并在SELECT语句的周围加上括号: