mysql语句中的php变量..我该怎么做


php variable in mysql statement...how do I do it

 <?php
 mysql_connect("localhost", "root", "") or die(mysql_error()); 
 mysql_select_db("names") or die(mysql_error()); 
 $green = "rose";    
 $data = mysql_query("SELECT * FROM freinds2 WHERE name = '"$green"'); 
 or die(mysql_error()); 
 Print "<table border cellpadding=3>"; 
 while($info = mysql_fetch_array( $data )) 
 { 
     Print "<tr>"; 
     Print "<th>Name:</th> <td>".$info['name'] . "</td> "; 
     Print "<th>Pet:</th> <td>".$info['pet'] . " </td></tr>"; 
     Print "<th>Color:</th> <td>".$info['fav_color'] . "</td> "; 
     Print "<th>Food:</th> <td>".$info['fav_food'] . " </td></tr>"; 
 } 
 Print "</table>"; 
 ?> 

上面的代码运行良好,直到我尝试将SELECT语句中的name=替换为我在$green='rose'上面创建的变量。它不会像我在SELECT语句中那样使用变量。有没有一种特殊的方法将变量放在select语句中。?非常感谢jim

您需要删除额外的引号:

 $data = mysql_query("SELECT * FROM freinds2 WHERE name = '"$green"'); 

成为

 $data = mysql_query("SELECT * FROM freinds2 WHERE name = '$green'"); 

 $data = mysql_query("SELECT * FROM freinds2 WHERE name = '" . $green . "'"); 

值得一提的是,mysql_query从PHP 5.5.0开始就被弃用了,您应该更新代码以使用MySQLi或PDO_mysql

试试这个->

$data = mysql_query("SELECT * FROM freinds2 WHERE name = '$green'"); 

您应该远离mysql,因为mysql API已被弃用。

你可以使用PDO或MySQLi,我更喜欢PDO,因为它支持的不仅仅是MySQL。

$db = new PDO('mysql:host=localhost;dbname=testdb;charset=utf8', 'username', 'password');

要使用标准查询,可以执行以下操作:

$stmt = $db->query("SELECT * FROM freinds2 WHERE name = '".$green."'");

但对于大多数变量,尤其是用户输入的字段,应该使用准备好的查询。

$stmt = $db->prepare("SELECT * FROM freinds2 WHERE name = ?");
$stmt->execute(array($green));

此查询受SQL注入保护。

要获得多个结果,您可以运行:

while ($info = $stmt->fetch()) {
     Print "<tr>"; 
     Print "<th>Name:</th> <td>".$info['name'] . "</td> "; 
     Print "<th>Pet:</th> <td>".$info['pet'] . " </td></tr>"; 
     Print "<th>Color:</th> <td>".$info['fav_color'] . "</td> "; 
     Print "<th>Food:</th> <td>".$info['fav_food'] . " </td></tr>"; 
}

这里有一个很好的PDO教程:http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers