您好我正在尝试打印匹配Album
或Artist
匹配的所有匹配行。我这里有代码,但有些不对劲。我试过研究它但却找不到任何明显的东西。我认为我走在正确的轨道上。
这不是一个重复的问题。这不是问题的引用,因为即使我删除它们并更改了名称它仍然无法正常工作。
<form>
<h3>Please either search by Artist or Album:</h3>
Artist: <input type="text" name="artist"><br /><br />
Album: <input type="text" name="album"><br /><br />
<input type="submit" value="Search Database" name="submit" />
</form>
<?php
if(isset($_POST["submit"])){
$con=mysql_connect('localhost','root','password') or die(mysql_error());
mysql_select_db('music') or die("cannot select DB");
if(!empty($_POST['artist'])) {
$name = $_POST['artist'];
$sql = "SELECT * FROM 'artists' WHERE 'artists name' =".$name;
$result = mysql_query($sql);
while($row = mysql_fetch_array($result)) {
echo $row['Album'] . ':' . $row['Artist Name'] . '<br />';
}
} else if(!empty($_POST['album'])) {
$name = $_POST['album'];
$sql = "SELECT * FROM 'albums' WHERE 'Album' =".$name;
$result = mysql_query($sql);
while($row = mysql_fetch_array($result)) {
echo $row['Artists'] . ':' . $row['Album'] . '<br />';
}
} else {
echo "<p>Please ente a search query</p>";
}
}
?>
谢谢!
答案 0 :(得分:0)
使用反引号而不是引号来转义包含特殊字符的表名和列名。引号用于制作文字字符串。
另一个问题是您在WHERE子句中要比较的字符串需要放在引号中。并且您需要使用mysql_real_escape_string
来阻止SQL注入(如果您升级到PDO
或mysqli
并使用预准备语句会更好。
您需要使用<form method="post">
,以便使用表单字段填写$_POST
,或使用$_GET
获取表单字段。您可以改为使用$_REQUEST
,它可以使用任何一种形式。
<?php
if(isset($_POST["submit"])){
$con=mysql_connect('localhost','root','password') or die(mysql_error());
mysql_select_db('music') or die("cannot select DB");
if(!empty($_POST['artist'])) {
$name = $_POST['artist'];
$sql = "SELECT * FROM `artists` WHERE `artist name` = '".mysql_real_escape_string($name)."'";
$result = mysql_query($sql) or die(mysql_error());
while($row = mysql_fetch_array($result)) {
echo $row['Album'] . ':' . $row['Artist Name'] . '<br />';
}
} else if(!empty($_POST['album'])) {
$name = $_POST['album'];
$sql = "SELECT * FROM `albums` WHERE `Album` = '".mysql_real_escape_string($name)."'";
$result = mysql_query($sql) or die(mysql_error());
while($row = mysql_fetch_array($result)) {
echo $row['Artists'] . ':' . $row['Album'] . '<br />';
}
} else {
echo "<p>Please ente a search query</p>";
}
}
?>