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