[英]Update database table with PHP
我正在嘗試為某些產品更新其數據庫中的類別。 我想查找名稱中帶有特定字詞的產品,然后再更新該產品的類別。
我想從sho_posts
中選擇ID,其中sho_posts.post_title
包含單詞'%Audio CD%'
這一部分,然后在其中更新sho_term_relationships.term_taxonomy_id
的值2,其中sho_term_relationships.object_id=sho_posts.id
。
我寫了一些PHP代碼,但它只構成選擇的一部分。 怎么了?
<?php
$username = "user_name";
$password = "password";
$hostname = "host";
//connection to the database
$dbhandle = mysql_connect($hostname, $username, $password)
or die("Unable to connect to MySQL");
$selected = mysql_select_db("1812233_shoping",$dbhandle)
or die("Could not select examples");
echo "Connected to MySQL<br>";
$result = mysql_query ("SELECT `id` FROM `sho_posts` WHERE CONVERT(`post_title` USING utf8) LIKE '%Audio CD%' ");
while ($row = mysql_fetch_array($result)) {
echo "ID:".$row{'id'}."<br>";
}
$sql = "UPDATE 'sho_term_relationships'
SET 'term_taxonomy_id' = '123'
WHERE 'object_id' = $row";
//close the connection
mysql_close($dbhandle);
我現在的腳本新鱈魚是:
$username = "_shoping";
$password = "password";
$hostname = "localhost";
//connection to the database
$dbhandle = mysql_connect($hostname, $username, $password)
or die("Unable to connect to MySQL");
$selected = mysql_select_db("_shoping",$dbhandle)
or die("Could not select examples");
echo "Connected to MySQL<br>";
$result = mysql_query ("SELECT `id` FROM `sho_posts` WHERE CONVERT(`post_title` USING utf8) LIKE '%Audio CD%' ");
while ($row = mysql_fetch_array($result)) {
$id[] = $row['id'];
/*echo "ID2:".$id."<br>";*/
}
foreach ($id as $value) {
echo "value:".$value."<br>";
}
/*$id = $row['id'];*/
$sql = "UPDATE sho_term_relationships
SET term_taxonomy_id = '123'
WHERE object_id =".$value;
mysql_query($sql);
//close the connection
mysql_close($dbhandle);
現在,它只進行一行更新,如何對所有行進行更新? 從選擇查詢中我得到4結果
嘗試這個:
$sql = "UPDATE sho_term_relationships
SET term_taxonomy_id = '123'
WHERE object_id = ".$row{'id'};
並確保運行查詢mysql_query($sql)
另外,我認為您可能想在while
循環內添加此查詢
您使用的是單引號而不是反引號(在這種情況下沒有必要)。 將更新查詢更改為此:
$sql = "UPDATE sho_term_relationships
SET term_taxonomy_id = 123
WHERE object_id = $row";
另外,您缺少一些代碼。 該查詢將不會調用任何內容。 它根本沒有被執行。
另外,這里還有其他一些問題,主要是由於sql注入的高風險。 首先, 停止使用mysql_
函數,不建議使用它們。 您應該准備變量。 這是mysqli_
格式的腳本關鍵部分的演示。
這也應該可以解決您的大多數問題(如果我不完全理解您的原始問題,可能還會有更多問題)。
您將這樣調用數據庫(並檢查錯誤)
$dbhandle = new mysqli($hostname, $username, $password);
if ($dhandle->connect_error) {
die("Connection failed: " . $dbhandle->connect_error);
}
然后,您將選擇這樣的數據(假設該術語每次可能都不相同,並且可能來自名為search
的后置變量)。
編輯:例如,如果您有一個HTML表單正在獲取該變量,如下所示:
<input type="select" name="search_term" />
您可以這樣命名變量:
$search = $_POST['search_term'];
然后將其設置為針對like
運算符的查詢
$search_term = '%'.$search.'%';
$result = $dbhandle->prepare("SELECT `id`
FROM `sho_posts`
WHERE CONVERT(`post_title` USING utf8)
LIKE ? ");
$result->bind_param("s",$search_term);
$result->execute();
$result->bind_result($id);
然后,您可以像這樣通過while循環獲取數據
while ($result->fetch()) {
... stuff you want to do here...
}
$result->close();
然后,您可以在更新查詢中使用它(采用類似的語法),然后可以從$ id中獲取信息,該信息是通過上面的bind_result創建的:
$sql = $dbhandle->("UPDATE sho_term_relationships
SET term_taxonomy_id = 123
WHERE object_id = ?");
$sql->bind_param("s",$id);
$sql->execute();
$sql->close();
可能需要一點時間來習慣這一點,但是我發現它更容易解析,並且更加安全。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.