2013-05-17 23 views
1

我是新来的使用PHP和MySQL数据库。我试图做一个用户输入用户名(UN)进入我的网站的这一部分。我有一个mySQL DB(测试)用户名为“测试”。 我知道我连接好,因为我通过创建一个简单的页面来打开数据库并列出所有用户(来自联合国领域)或者选择一个特定的用户来测试它,然后我创建了一个名为“input.php”的页面,用于获取输入的测试。由于这里看到>如何使用php/sql将输入与mysql数据进行比较?

<html> 
<body> 
<form action="test.php" method="get"> 
UN: <input type="text" name="U"> 
<input type="submit"> 
</form> 
</body> 
</html> 

从上面的输入变为“test.php的”当在我的数据库与当前数据核对以下。

<?php 
$hostname = "test.db.some#.somehost.com"; 
    $username = "test"; 
    $dbname = "test"; 
$password = "password"; 
$usertable = "test"; 
$yourfield = "UN"; 
    mysql_connect($hostname, $username, $password) OR DIE ("Unable to 
     connect to database! Please try again later."); 
    mysql_select_db($dbname); 
$query = "SELECT * FROM $usertable WHERE $yourfield = $_GET["U"]"; 
    $result = mysql_query($query); 
    if ($result) { 
     while($row = mysql_fetch_array($result)) { 
       $name = $row["$yourfield"]; 
       echo "Hello: $name<br>"; 
      } 
    } 
    else { 
     echo "User dosen't exit!"; 
    } 
    mysql_close(); 
?> 

这是我的错误> *解析错误:语法错误或者意想不到的''',期待T_STRING或T_VARIABLE或T_NUM_STRING行20上的/home/content/81/11107981/html/test.php *

我知道我很近,但我想要雪茄。 ;)

回答

0

我认为问题是,你没有在查询中逃脱报价:

尝试以下操作:

$u = $_GET['u']; 
$query = "SELECT * FROM $usertable WHERE $yourfield = " . $u; 
1

mysql_ *已被弃用。你应该避免它们。

变化

mysql_connect($hostname, $username, $password) OR DIE ("Unable to 
    connect to database! Please try again later."); 

$connection = mysql_connect($hostname, $username, $password) OR DIE ("Unable to 
connect to database! Please try again later."); 

$query = "SELECT * FROM $usertable WHERE $yourfield = $_GET["U"]"; 

$query = "SELECT * FROM $usertable WHERE $yourfield = '".$_GET["U"]."'"; 

甲第二

mysql_close(); 

mysql_close($connection); 
+0

mysql_ *已弃用为PHP 5.5.0,并将在未来删除。 – ontananza

+0

是的,你说得对。 – Sumoanand

+0

哇,感谢您的快速反应#1:D#2它现在可以工作。是的,我必须使用我的虚拟主机为我提供的一个使用mysql代码的旧例子。梅多多噶玛对你微笑。 :) –

0

你应该写这样的查询,而不是:

$query = "SELECT * FROM $usertable WHERE $yourfield = '" . $_GET["U"] . "'"; 

或者你可以写这样的:

$query = "SELECT * FROM $usertable WHERE $yourfield = '{$_GET["U"]}'"; 
0

你的第一个问题已经解决了,但这里是你的解决方案ND的帮助下沿问题把这段代码转换到mysqli的

<?php 
$hostname = "test.db.some#.somehost.com"; 
$username = "test"; 
$dbname = "test"; 
$password = "password"; 
$usertable = "test"; 
$yourfield = "UN"; 
$connect = mysqli_connect($hostname, $username, $password) OR DIE ("Unable to 
    connect to database! Please try again later."); 
mysqli_select_db($dbname); 

/* You can combine the above two lines in oen in mysqli by giving db name as fourth parameter 
mysqli_connect($hostname, $username, $password, $dbname) 

*/ 

$query = "SELECT * FROM $usertable WHERE $yourfield = $_GET["U"]"; 
$result = mysqli_query($query); 
$rowSelected = mysqli_num_rows($result); 
if ($rowSelected) { 
    while($row = mysqli_fetch_array($result)) { 
      $name = $row["$yourfield"]; 
      echo "Hello: $name<br>"; 
     } 
} 
else { 
    echo "User dosen't exit!"; 
} 
mysqli_close($connect); 
?> 

mysql_querymysqli_query将返回资源..这将是真正的不管行是否被提取或不..what你需要检查是否有是任何正在实际获取的数据..所以使用mysqli_num_rows(mysqli version of mysql_num_rows)

相关问题