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

时间:2014-04-09 16:31:01

标签: php

 <?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语句中。 非常感谢 吉姆

3 个答案:

答案 0 :(得分:3)

您需要删除其他引号:

 $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 . "'"); 

从PHP 5.5.0开始,不推荐使用mysql_query也是合适的,您应该更新代码以使用MySQLi或PDO_MySQL

答案 1 :(得分:1)

试试这个 - &gt;

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

答案 2 :(得分:0)

你应该放弃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