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

Php 所以我';我试着让它在插入之前检查steamid64是否已准备就绪,但它只是以任何方式插入?,php,mysql,steam,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_st

所以我试着让它在插入之前检查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);
?>

除了不能混合使用
mysql\u*
mysqli\u*
这样的函数(选择一个,
mysqli\u*
并坚持使用),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\u query()
执行查询,只设置字符串没有任何作用。

请注意,请不要使用
mysql\u*
函数,它们已被弃用。你可以使用
mysqli*
函数(过程式或OOP风格)或
PDO
(抽象层)。这对我没有帮助。不要将
mysqli*
mysql*
函数混合使用。所以我只需要在mysql的末尾添加i,就像mysqli*?所有函数的名称都不同,但是在这种情况下,您应该使用
mysqli_num_rows
并将查询资源(从代码中缺少的
mysqli_查询中获得)作为第一个参数。问题中的代码也缺少
mysqli_查询
,而且
mysql_num_rows
应该是
mysqli
@fabriciomatté谢谢,我添加了你的第一点,第二点已经在我的评论和回答的第一行中提到了。哦,好吧,你可以更清楚地说“你必须在调用
mysqli_num_rows
之前执行查询。”两行代码块可以帮助说明。
mysqli_report(MYSQLI_REPORT_STRICT);