单击按钮时向数据库添加值

时间:2015-03-05 20:12:01

标签: javascript php html

您好我创建了一个代码,用于将输入文本中的值输入到数据库中,但它在数据库中添加了空值

   <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吗?

1 个答案:

答案 0 :(得分:4)

您正在混合服务器端代码和客户端代码。很多。

请求页面时,服务器端代码(本例中为PHP)在服务器上执行。它完整​​执行,然后显示页面。这是您的服务器端代码:

$servername = "";
$username = "root";
$password = "ahmed2001";
$db = "html";
$conn = mysqli_connect($servername, $username, $password, $db);
if(!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

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

首次加载页面时,没有$_POST个值。 (即使有,你也不会在SQL查询中使用这些值。你正在使用从未定义过的变量。)所以你只需要在数据库中插入空字符串。 (另请注意,此代码有一个SQL injection vulnerability。您想要阅读此内容。)

然后,在执行此代码之后,将在浏览器中呈现页面并执行客户端代码。这是您的客户端代码:

function myFunction() {
    New record created succeddfully !
}

首先,这不是有效的JavaScript代码。另一方面,这个功能没有做任何事情。毫无疑问,您在浏览器的控制台中出现错误,因此您应该看一下。但即使你删除了那行非代码,你仍然只有一个空函数。您可以随心所欲地调用该功能,它不会做任何事情。

说实话,您将要开始使用PHP的一些入门教程。基本上,为了使客户端代码将值发送到服务器端代码,需要在某种请求中将这些值发布到服务器。它可以是form帖子,也可以是AJAX请求,也可能是其他内容。但是,您无法混合服务器端代码和客户端代码。