【发布时间】:2015-03-05 20:12:01
【问题描述】:
您好,我编写了一个代码将输入文本中的值输入到数据库中,但它在数据库中添加了一个空值
<html>
<body>
<input type="text" name="value" />
<input type="text" name="value2" />
<input type="text" name="value3" />
<button onclick="myFunction()">Register</button>
<?php
$servername = "";
$username = "root";
$password = "ahmed2001";
$db = "html";
$conn = mysqli_connect($servername, $username, $password, $db);
if(!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
?>
<script>
function myFunction() {
<?php
$user = $_POST['value'];
$pass = $_POST['value2'];
$em = $_POST['value3'];
$sql = "INSERT INTO players (username, password, email)
VALUES ('$value', '$value2', '$value3')";
if (mysqli_query($conn, $sql)) {
echo "New record created succeddfully !";
} else {
echo "Error : " . $sql . "<br>" . mysqli_error($conn);
}
mysqli_close($conn);
?>
}
</script>
</body>
</html>
不使用 jQuery 有什么办法吗?
【问题讨论】:
-
您的代码包含您的根密码。另外,它很容易发生 SQL 注入。
-
那是因为你引用了错误的变量。在这里,访问php.net/manual/en/function.error-reporting.php 并使用它。它会抛出错误。您也没有带有 post 方法的表单标签。 JS 函数不调用 PHP 函数。
-
您的
myFunction将包含无效的javascript,因为您正在从PHP 中回显纯文本。您可能需要将 PHP 拆分为单独的脚本,并在单击注册按钮时对其进行异步调用。 -
代码没有意义,你为什么将 db 查询代码包装在 javascript 函数中。 PHP 和 javascript 在不同的环境和不同的时间运行。每次页面加载时,您都会在不知不觉中创建一个空插入
-
在其他地方遇到此 SQL 字符串问题:
$sql = "INSERT INTO players (username, password, email) VALUES ($_POST['name'], $_POST['password'], $_POST['email'])";。如果您在数组周围放置大括号,您会发现它会起作用,例如:{$_POST['name']}。但是,不要使用它! - 因为这段代码是不安全的。正如其他人指出的那样,它包含一个 SQL 注入,很可能会让你被黑。
标签: javascript php html