Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.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 MySQL错误:where子句中的列未知 用户名:_Php_Mysql - Fatal编程技术网

Php MySQL错误:where子句中的列未知 用户名:

Php MySQL错误:where子句中的列未知 用户名:,php,mysql,Php,Mysql,所以我总是收到这个错误消息:“where子句”中的MySQL错误:未知列“dompol171”。 因此,它将我输入的用户名与列“user\u name”本身进行比较。我一直很害怕…因为我不知道如何用不同的方式来比较它 尝试使用: <div class="ui-widget"> <form method="POST"> <?php if(isset($_POST['search'])){ $connection = mysql_connect('localhos

所以我总是收到这个错误消息:“where子句”中的MySQL错误:未知列“dompol171”。
因此,它将我输入的用户名与列“user\u name”本身进行比较。我一直很害怕…因为我不知道如何用不同的方式来比较它

尝试使用:

<div class="ui-widget">

<form method="POST">
<?php

if(isset($_POST['search'])){

$connection = mysql_connect('localhost', 'root', '1234');
mysql_select_db('hoppers');

    $query = "SELECT user_name FROM users WHERE {$_POST['username']} = user_name";
    $result = mysql_query($query) or die ("MySQL-Error: " . mysql_error());
    $row = mysql_fetch_array($result);


if($row = TRUE){

        $present = $row['user_name'];
        echo $present;

     }else{
            echo "This User does not exist!";
        }
}
?>

<label for="tags">Username: </label>
<input type="text" id="tags" name = "username">
<input type="submit" name="search" value="Suchen!">
</form>
</div>

查询需要轻微调整,从:

 $query = "SELECT user_name FROM users WHERE user_name = '{$_POST['username']}'";
致:

将值用单引号括起来

此更新的PHP将验证传回的数据:

$query = "SELECT user_name FROM users WHERE user_name = '{$_POST['username']}'";

您在where子句中犯了一个错误,它是:

其中user\u name={$\u POST['username']}”


语法是:
其中“column”=“value”

您的参数是向后的。列名总是在值之前:

<?php
if(isset($_POST['search'])){

$connection = mysql_connect('localhost', 'root', '1234');
mysql_select_db('hoppers');

$query = "SELECT user_name FROM users WHERE user_name = '{$_POST['username']}'";
$result = mysql_query($query) or die ("MySQL-Error: " . mysql_error());

// count # of rows returned by DB query
$num_users = mysql_num_rows( $result );

// If more than 0
if ( $num_users > 0 ){
    // Success!
    $row = mysql_fetch_array($result);
    var_dump( $row );
} else {
    // No results returned
    echo "This User does not exist!";
}


}

这与PHP中的比较运算符不同,PHP中的操作数可以位于等式的任一侧。

这里发生的是
$\u POST['username']
的值被视为一个列,因为您没有引用它,即将它设置为字符串。因此,假设用户名为musa,它试图将列musa与列user\u name进行比较(该列不存在)。它应该是

$query = "SELECT user_name FROM users WHERE user_name = {$_POST['username']}";
尝试使用以下方法:

 $query = "SELECT user_name FROM users WHERE 'some username' = user_name";

在这种情况下没有冲突…你的意思是在引用$_POST的范围内吗?{}括号防止冲突。很高兴知道,抱歉。谢谢你!所以现在它没有给我一个错误,但它不会显示结果=(假设数据确实存在于数据库表中,您仍然需要对代码进行一些轻微的调整。请参阅更新:)因此,这在我的网站上为我提供了以下结果:数组(2){[0]=>string(4)“lisa”[“user_name”]=>string(4)“lisa”}关于使用mysqli的所有必要内容在哪里?mysql_query()不是吗仍然不推荐使用?这给了我以下错误代码:解析错误:语法错误,意外的“”(T_封装的_和_空格),需要标识符(T_字符串)或变量(T_变量)或数字(T_NUM_字符串),所以这不会更改任何内容…它仍然不会比较!SQL语句怎么样?(我编辑了两次答案)$query=”从user\u name='{$\u POST['username']}''的用户中选择user\u name;这似乎有效…实际上我在回显结果时遇到问题…你确定吗?
 $query = "SELECT user_name FROM users WHERE 'some username' = user_name";
$username = $_POST['username'];
$query = "SELECT user_name FROM users WHERE user_name='" . $username . "'";