所以我试着在插入之前检查一下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);
?>
答案 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()
执行查询,只是设置字符串不会做任何事情。