所以我试着让它检查一下,在插入之前看看steamid64是否已经准备就绪,但它只是插入任何方式?

时间:2014-08-29 23:53:41

标签: php mysql steam

所以我试着在插入之前检查一下steamid64是否已经准备就绪,但它只是插入任何方式? 我在这里不擅长PHP。

<?php
$con=mysqli_connect("localhost","user","pass","Gmod");

if (mysqli_connect_errno()) {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$SteamID64 = mysqli_real_escape_string($con, $_POST['SteamID64']);
$enable = mysqli_real_escape_string($con, $_POST['enable']);

$sql="SELECT * FROM Loading (SteamID64, enable) WHERE SteamID64='$SteamID64'";
 if(mysql_num_rows($sql)>=1) {
echo'<center>The music is already disabled!</center>';
}
else {
$sql="INSERT INTO Loading (SteamID64, enable)
VALUES ('$SteamID64', '$enable')";
}

if (!mysqli_query($con,$sql)) {
  die('Error: ' . mysqli_error($con));
}
echo "<center>The music will not play when you connect.</center>";

mysqli_close($con);
?>

我从一些论坛和w3schools.com上得到了这个 并编辑了它。

好的,所以我做了这个,但它仍然只是插入数据?

<?php
mysqli_report(MYSQLI_REPORT_STRICT);
$con=mysqli_connect("localhost","root","server","Gmod");
if (mysqli_connect_errno()) {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$SteamID64 = mysqli_real_escape_string($con, $_POST['SteamID64']);
$enable = mysqli_real_escape_string($con, $_POST['enable']);

mysqli_query($con,"SELECT * FROM Loading WHERE SteamID64='$SteamID64'");
 if(mysqli_num_rows(mysqli_query)>=1) {
echo'<center>The music is already disabled!</center>';
}
else {
mysqli_query($con,"INSERT INTO Loading (SteamID64, enable)
VALUES ('$SteamID64', '$enable')");
}
echo "<center>The music will not play when you connect.</center>";

mysqli_close($con);
?>

1 个答案:

答案 0 :(得分:1)

除了你不能混合mysql_*mysqli_*这样的功能(选择一个,mysqli_*并坚持下去)之外,你的sql中有一个错误:

SELECT * FROM Loading (SteamID64, enable) WHERE SteamID64='$SteamID64'
                      ^^^^^^^^^^^^^^^^^^^ this should not be here

您需要将其更改为:

SELECT * FROM Loading WHERE SteamID64='$SteamID64'

你可以让mysqli抛出异常,以便它在出错时告诉你到底出了什么问题。只需将其添加到脚本的顶部:

mysqli_report(MYSQLI_REPORT_STRICT);

您遇到的另一个问题是,您的第二个查询的执行应该在上一个条件的else部分内。

正如@FabrícioMatté已经提到过的,你实际上需要使用mysqli_query()执行查询,只是设置字符串不会做任何事情。