【问题标题】:PHP check if value exists in MySQL [closed]PHP检查MySQL中是否存在值[关闭]
【发布时间】:2014-11-29 14:00:13
【问题描述】:

我试图复制 How to Check if value exists in a MySQL database 并自己制作,但由于某种原因它不起作用......

这是我得到的:

<?php
$host = '127.0.0.1';
$username = 'root';
$password = '';
$dbname = 'multiplayer';
$con=mysqli_connect($host, $username, $password, $dbname);

$check_player_ip=mysqli_query($con, 'SELECT `player_ip` FROM `playerdata` WHERE username = "remco" AND active = 0');
    if (mysqli_num_rows($check_player_ip) == 0) {
      //didnt find anything
    } else{
      //found something
    }
?>

我收到此错误: 解析错误:语法错误,第 1 行 C:\xampp\htdocs\test.php 中出现意外的 '$check_player_ip' (T_VARIABLE)

解决方案

如果您收到 T_VARIABLE 错误,请检查此规则之前的变量。您可能忘记了“;”的位置xD

感谢大家的支持!

【问题讨论】:

  • 你有一个错误(extra i):mysqli_query应该是mysql_query
  • @Arkni 绝对不是。而mysql_crap应该至少mysqli_crap。相反的建议应该在十年前发布。
  • @user2864740 ,所以在这种情况下,他应该添加连接实例作为第一个参数(编辑:他编辑了他的问题)。
  • @Arkni 啊,现在我们到了某个地方:D
  • @Remco 如果您打算每 2 分钟更改一次问题。根据给出的答案的更新,我将投票关闭。 不要那样做。保留您原来的问题,并将 cmets 放在答案下方。

标签: php mysql


【解决方案1】:

试试这个:

<?php 
$host = '127.0.0.1';
$username = 'root';
$password = '';
$dbname = 'multiplayer';

$con = new mysqli( $host, $username, $password, $dbname );

/* Check Connection */
    if ( $con->connect_error ) {
        printf( "Connect failed: %s\n", $con->connect_error );
        exit();
    }

/* Query - Returns a resultset */
    if ( $result = $con->query('SELECT `player_ip` FROM `playerdata` WHERE username = "remco" AND active = 0 ') ) {

    if ( $result->num_rows <= 0 ) {
      //didnt find anything
          printf("No player");
    } else {
      //found something
          printf("Select returned %d rows.\n", $result->num_rows);
    }

    /* free result set */
        $result->close();
}

/* close connection */
    $con->close();
?>

【讨论】:

  • 完美运行。谢谢! :)
  • 然后给帖子投票;)
  • 我没有足够的声誉......我只是(stackoverflow 上的大多数......如何称呼我)新手。
【解决方案2】:

您正在混合 MySQL API,它们不会混合在一起。 mysql_num_rows

使用mysqli_num_rows()

还要确保您的数据库连接也是mysqli_* 而不是mysql_*

EDIT在您编辑了您的问题之后。

您需要将数据库连接传递给您的查询:

$check_player_ip=mysqli_query($con,'SELECT...`

$con 是您的数据库连接。相应地改变。

加上WHERE username = remco - 单词remco 需要用引号括起来,它是一个字符串而不是int

WHERE username = 'remco'


旁注:

您当前的代码对SQL injection开放。
使用prepared statements,或PDO with prepared statements


编辑 2:

尝试颠倒引号:

$check_player_ip=mysqli_query($con, "SELECT `player_ip` FROM `playerdata` WHERE username = 'remco' AND active = 0");
    if (mysqli_num_rows($check_player_ip) == 0) {
      //didnt find anything
    } 

【讨论】:

  • 我再次编辑了代码,这次使用“remco”,仍然是同样的错误:/
  • @Remco 在 Edit #2 下重新加载我的答案
  • 我仍然收到 T_VARIABLE 错误:/
  • @Remco 是 username 列是 VARCHAR 还是 activeint
  • 我遇到了问题,我忘记了 ;放在变量之后!感谢你们对我的帮助。您能否支持我的问题,以便我明天可以在 stackoverflow 上提出更多问题?
【解决方案3】:

你应该执行那个 mysqli 查询...

while($rows = mysql_arrayAssoc($ursql)){
    $data[]=$rows;
}
if($something== $data['attribute']) //attribute(id,name...)
    echo "ok some data is in"
else 
   echo "no matching data"

希望对你有帮助:)

【讨论】:

  • 这根本没有帮助 :) 但是感谢您的回复。
  • 哦,是的,当然你必须设置连接做你的数据库,在 php 开始时没有检查好:p
  • 我已经根据您的意愿编辑了与代码的连接 :) 也许您现在可以帮助我吗?还是您也想查看孔数据库? :D
  • 第一次检查你的连接是否正常if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } 然后在 if 子句if(false===$check_player_ip) {echo "error"} 我建议你一步一步慢慢调试......并阅读一些关于 MYSQLI 的文档php.net/manual/en/book.mysqli.php
  • 这很好,因为否则我的孔代码将无法工作:) 我只是将这段代码从孔部分中剪下来。连接不是问题,T_VARIABLE 错误才是问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-09
  • 2014-03-06
  • 2014-09-10
  • 2012-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多