我是新手,希望学习编程。我选择了PHP并以第4版Oreilly的方式工作。我正在努力了解第一个主要计划。我确信这很简单,但我不太明白一部分。在程序的以下部分中,我将其简化为相关位:
$conn = new mysqli(parameters to connect to database)
$stuff = get_post($conn, 'stuff')
$query = "INSERT INTO table VALUES" . "('$stuff')"
$result = $conn->query(query)
Function get_post($conn, $var)
Return $conn->real_escape_string($_POST[$var])
我知道这是一种防止恶意用户输入攻击的方法。我不明白的部分是为什么或如何将包含表单用户输入的$_POST
在进入数据库之前作为数据库的属性处理? (使用最后一行)我认为在进入数据库之前会剥离东西。我确定我在这里缺少一些非常基本的东西,所以我希望有人可以解释这是如何工作的。
基本上我很难看到$_POST
如何成为$conn
的属性。任何人都可以带我走过吗?
感谢您的帮助。
答案 0 :(得分:0)
让我们一步一步走:
$conn = new mysqli(parameters to connect to database)
使用此行,您可以创建一个与MySQL数据库交互的对象。
$stuff = get_post($conn, 'stuff')
这一行,从POST变量中检索名为" stuff"的信息。并将其分配给$ stuff变量。
$query = "INSERT INTO table VALUES" . "('$stuff')"
您要强制进入数据库的查询(将变量$ stuff的值插入表格" table"
$result = $conn->query(query)
这个很棘手,它做了两件事,首先,使用$ conn对象的查询函数($ conn->查询),并在查询执行到数据库后将变量$ query赋予该函数,该请求的结果将保存到$ result
中最后,功能:
函数get_post($ conn,$ var){ 返回$ conn-> real_escape_string($ _ POST [$ var]); }
你对real_escape_string使用的函数是一个已经在mysqli对象中编程的函数,你用$ conn变量传递,当你连接$ query =&时,它清理可能破坏查询的恶意字符串#34;插入表值" 。 "('的 $东西强>')"