Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP和sql问题_Php - Fatal编程技术网

PHP和sql问题

PHP和sql问题,php,Php,我一直在尝试为一些在线游戏制作记分板系统,它工作正常,因此我添加了一个HTML表单,该表单与连接到sql数据库的php脚本交互,并在sql记分板表中插入一个带有百分比的名称,如果我通过phpMyAdmin手动添加名称/百分比,它在记分板上工作得很好,但是当我制作html表单,要求用户插入他的名字,然后在记分板上添加他的名字和百分比时,它没有添加,所以这是我的html表单 <center><form method="post" action=""> <font col

我一直在尝试为一些在线游戏制作记分板系统,它工作正常,因此我添加了一个HTML表单,该表单与连接到sql数据库的php脚本交互,并在sql记分板表中插入一个带有百分比的名称,如果我通过phpMyAdmin手动添加名称/百分比,它在记分板上工作得很好,但是当我制作html表单,要求用户插入他的名字,然后在记分板上添加他的名字和百分比时,它没有添加,所以这是我的html表单

<center><form method="post" action="">
<font color="green">Your name Max length is 15</font> <input type="text" name="username" maxlength="15">
<button style="background-color:red; name="Enter" type="submit" value="HTML">Enter</button></center>
</form>

你的名字最大长度是15
这条线路需要修理

$query = "INSERT INTO scoreboard (name,percent) VALUES ('$getname','$percentage');" or die("Error in the consult.." . mysqli_error($link));
我把它改成了这个

$query = "INSERT INTO scoreboard VALUES ('$getname','$percentage')";
然后添加
或die(“consult...mysqli_Error($link))中的错误到您的查询行


你在变量中间有一个编译器断线,你不需要声明你的命名值的顺序,你只需要把这些值放在正确的地方,它就会自动地按顺序添加它们。

< p>每当怀疑任何函数的正确用法时,先从PHP.NET中获取帮助。关于这一点,页面上有很多例子。看看

首先清理输入值

$getname = mysqli_real_escape_string($link,$_POST['username']);
$percentage = 10;
然后


我测试了您的代码,发现您的submit按钮是故障之一,包括在以下位置不正确地放置分号:

$query = "INSERT INTO scoreboard (name,percent) VALUES ('$getname','$percentage');"
应改为:

$query = "INSERT INTO scoreboard (name,percent) VALUES ('$getname','$percentage')";
使用以下表单和PHP进行测试
以下是一种更安全(参数化)的方法,取自

快速提示:如果要使用
$percentage=10而不是
$percentage=“10”

然后您将需要使用
$stmt->bind_参数(“si”,$safe_variable,$percentage)s
表示
string
i
表示
integer

<form method="post" action="">
<center>
<font color="green">Your name Max length is 15</font>
<input type="text" name="username" maxlength="15">
<input type="submit" name="submit" value="Submit">
</center>
</form>

<?php
if (empty($_POST['username'])) {
die("<div align='center'>Enter your name</div>");
}
else
{
    $mysqli = new mysqli("myhost","myusername","mypw","mydatabase");
    // Check that connection was successful.

    if($mysqli->connect_errno > 0) {
      die('Connection failed [' . $mysqli->connect_error . ']');
    }

    $percentage = "10";
    $unsafe_variable = $_POST["username"];
    $stmt = $mysqli->prepare("INSERT INTO scoreboard (name,percent) VALUES (?,?)");
    // TODO check that $stmt creation succeeded
    // "s" means the database expects a string
    $stmt->bind_param("ss", $unsafe_variable,$percentage);
    $stmt->execute();
    $stmt->close();
    $mysqli->close();
    echo "<div align='center'>Data written to DB</div>";
}
?>

你的名字最大长度是15

有点不相关,但您忘记关闭表单按钮上的
style
属性
$result=mysqli_query($link,$query)或die(“咨询中的错误”)。mysqli_Error($link))$query是一个字符串变量。不要将die()与它一起使用,我认为这与style属性无关$结果=mysqli_query($link,$query)或die(“咨询中出错”)。mysqli_Error($link))
$query=“插入记分板值(“$getname”,“$percentage”)”;或者死(“咨询中的错误…”mysqli_Error($link));我已经这么做了,但是运气不好。这似乎是错的。为什么要删除列名。也许他们不是全部?为什么要在变量状态后使用“or die()”?我在phpMyAdmin INSERT to scoreboard VALUES('Devnull1','10')中运行了它,它起了作用,我想这只是在sql查询中添加php变量。我将立即尝试并给您反馈:),感谢您花费了大量时间。@AhmedMagdy非常欢迎您。我刚刚对
参数化的
方法进行了快速编辑。两者都经过了充分的测试,为我工作。Cheeset不适用于我:S,echo“您正确插入的值为$getname和$percentage的数据已添加到记分板。”;这部分甚至没有执行,可能是我的代码有问题。@AhmedMagdy使用我放在这里的代码进行测试,然后根据需要进行编辑。现在不要使用你的任何产品(不包括其他产品)。并检查您的数据库字段是否正确。我已经复制了您的代码,它仍然不起作用,并且我的数据库条目仍然相同,没有任何修改。
$query = "INSERT INTO scoreboard (name,percent) VALUES ('$getname','$percentage')";
<form method="post" action="">
<center>
<font color="green">Your name Max length is 15</font>
<input type="text" name="username" maxlength="15">
<input type="submit" name="submit" value="Submit">
</center>
</form>

<?php
if (isset($_POST['username']))
{
$link = mysqli_connect("myhost","myusername","mypw","mydatabase") or die("Error " . mysqli_error($link));
// $getname = $_POST['username'];
$getname = mysqli_real_escape_string($link,$_POST['username']);
$percentage = "10";
$query = ("INSERT INTO scoreboard (name,percent) VALUES ('$getname',$percentage)");
$result = mysqli_query($link, $query);
if(!$result){
  printf("Error message: %s", mysqli_error($link));
}
else {
echo "Data properly inserted with the value of <b>$getname</b> and <b>$percentage</b>";
     }
}
?>
if (empty($_POST['username'])) {

die("<div align='center'>Enter your name</div>");

}

else

{
// rest of code
$getname = mysqli_real_escape_string($link,$_POST['username']);
<form method="post" action="">
<center>
<font color="green">Your name Max length is 15</font>
<input type="text" name="username" maxlength="15">
<input type="submit" name="submit" value="Submit">
</center>
</form>

<?php
if (empty($_POST['username'])) {
die("<div align='center'>Enter your name</div>");
}
else
{
    $mysqli = new mysqli("myhost","myusername","mypw","mydatabase");
    // Check that connection was successful.

    if($mysqli->connect_errno > 0) {
      die('Connection failed [' . $mysqli->connect_error . ']');
    }

    $percentage = "10";
    $unsafe_variable = $_POST["username"];
    $stmt = $mysqli->prepare("INSERT INTO scoreboard (name,percent) VALUES (?,?)");
    // TODO check that $stmt creation succeeded
    // "s" means the database expects a string
    $stmt->bind_param("ss", $unsafe_variable,$percentage);
    $stmt->execute();
    $stmt->close();
    $mysqli->close();
    echo "<div align='center'>Data written to DB</div>";
}
?>