我有MySQL表,它有两列(名称和描述),我已经使用HTML表单插入了一些数据。
但是,如果用户输入现有名称和不同的描述,以便更新现有名称的描述,而不是添加包含现有名称和新描述的新行,我会试图弄清楚是否有办法。< / p>
这是我的PHP代码:
<html>
<head>
<meta charset = "utf-8">
<title>Search Results</title>
<style type = "text/css">
body { font-family: sans-serif; }
table { background-color: lightblue;
border-collapse: collapse;
border: 1px solid gray; }
td { padding: 5px; }
tr:nth-child(odd) {
background-color: white; }
</style>
</head>
<body>
<?php
$db_connect = mysql_connect("hostname", "name", "password");
$db_query = "SELECT * FROM urltable";
// connect to MySQL
if (!$db_connect)
{
die("Could not connect to database");
}
// open Products database
if ( !mysql_select_db( "urls", $db_connect ) )
die( "Could not open products database </body></html>" );
$db_insert = "INSERT INTO urltable(URL, description) VALUES ('$URL', '$Description')";
$db_insert_data = mysql_query($db_insert);
if ($db_insert_data)
{
echo("<br>Input data is Added</br>");
}
else
{
echo("<br>Input data not Added</br>");
}
// query Products database
if ( !( $result = mysql_query( $db_query, $db_connect ) ) )
{
print( "<p>Could not execute query!</p>" );
die( mysql_error() . "</body></html>" );
} // end if
mysql_close( $db_connect );
?><!-- end PHP script -->
<table border="1">
</br>
<caption>URL TABLE</caption>
</br>
<?php
// build table headings
print( "<tr>" );
print("<th>URL</th>");
print("<th>Description</th>");
print( "</tr>" );
// fetch each record in result set
while ( $row = mysql_fetch_row( $result ) )
{
// build table to display results
print( "<tr>" );
foreach ( $row as $value )
print( "<td>$value</td>" );
print( "</tr>" );
} // end while
?><!-- end PHP script -->
</table>
</br>
<a href="insert.html">Home</a></br>
</body>
</html>
现在它只会插入输入的任何数据,但只有输入现有名称,我才能弄清楚如何对描述进行更新。我可以使用条件语句检查现有名称吗?
答案 0 :(得分:3)
您应该查看MySQL中的UPDATE命令。
Erdem的回答 是 无效的查询。
看起来应该是这样的:
$db_update = "UPDATE urltable SET description = \"New description\" WHERE url = \"http://urlyouwanttoupdate.com\"";
mysql_query($db_update);
补充乔说的话。出于安全考虑,您不能将用户的输入直接输入到查询中。这使您的数据库容易受到称为“SQL注入”的攻击。有很多内容已经在网上提供。
以下是您正在使用的更新和插入功能的安全示例。
$safe_description = mysql_real_escape_string($Description);
$safe_url = mysql_real_escape_string($URL);
$db_update = "UPDATE urltable SET description=\"".$safe_description."\" WHERE url =\"".$safe_url."\"";
mysql_query($db_update);
对于安全插页:
$db_insert = "INSERT INTO urltable(URL, description) VALUES (\"".$safe_url."\", \"".$safe_description."\")";
$db_insert_data = mysql_query($db_insert);
答案 1 :(得分:1)
我们使用UPDATE。
"UPDATE tablename SET cloumnname = 'newname' WHERE ID = 'idoftheperson'"
并且也不使用mysql_query()
请使用PDO库或mysqli。
这是一个教程如何在php中使用UPDATE命令。
http://www.w3schools.com/php/php_mysql_update.asp
如果要检查数据库是否存在名称或id,则需要在mysql中计算数据。为此,请
<?php
/* Open a connection */
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$query = "SELECT Name, CountryCode FROM City ORDER BY Name LIMIT 20";
if ($stmt = mysqli_prepare($link, $query)) {
/* execute query */
mysqli_stmt_execute($stmt);
/* store result */
mysqli_stmt_store_result($stmt);
if(mysqli_stmt_num_rows($stmt) >0){
/* do the mysql update here */
}
/* close statement */
mysqli_stmt_close($stmt);
}
/* close connection */
mysqli_close($link);
?>
感谢