2014-01-21 27 views
0

第一MySQL的說法是似乎很好,但將不會運行:更新語句不工作,還如何包裝兩個語句在一個MySQL查詢

聲明:

$sql = "UPDATE ('bands') SET ('Stock' = 'Stock' - 1) WHERE ('Band_id' = '$Band_id')"; 

我也想運行該語句和這一塊在一起:

$sql = "INSERT INTO orders (band_id,user_id,user_name,band_name,band_venue) VALUES('$band_id', '$user_id', '$user_name', '$name', '$venue')"; 

我知道我需要在交易中做到這一點,但谷歌它不知道如何做到這一點。

全碼

<?php 
require 'core/init.php'; 
$user = new User(); 

$Band_id = mysql_real_escape_string($_GET['id']); 
$band_id = mysql_real_escape_string($_POST['band']); 
$name = mysql_real_escape_string($_POST['bandname']); 
$venue = mysql_real_escape_string($_POST['bandvenue']); 
$user_id = escape($user->data()->id); 
$user_name = escape($user->data()->username); 



$sql = "INSERT INTO orders (band_id,user_id,user_name,band_name,band_venue) VALUES('$band_id', '$user_id', '$user_name', '$name', '$venue')"; 
//$sql = "UPDATE ('bands') SET ('Stock' = 'Stock' - 1) WHERE ('Band_id' = '$Band_id')"; 

mysql_query ($sql, $linkme) 
    or die ("could not add to database"); 
?> 
+0

我在想'band_id'是不是一個字符串的整數。如果是這樣,請不要用引號括住該值。 –

+0

用更多代碼更新問題 – Beep

+0

通過用單引號圍繞您的標識符(字段名稱,表名),您就可以製作出字符串。不要這樣做。在大多數情況下,標識符不需要任何東西,在某些特定情況下,您可以在標識符周圍使用標準雙引號或特定於mysql的反引號。 – fvu

回答

0

更改爲

'UPDATE `bands` SET `Stock` = (`Stock` - 1) WHERE `Band_id` = ' . $Band_id . ')'; 

如果你使用PDO(你可能應該是),這是你所需要的:

$dsn = 'mysql:dbname=testdb;host=127.0.0.1'; 
$user = 'dbuser'; 
$password = 'dbpass'; 

$dbh = new PDO($dsn, $user, $password); 

$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

$dbh->beginTransaction(); 
$dbh->exec('UPDATE `bands` SET `Stock` = (`Stock` - 1) WHERE `Band_id` = ' . $Band_id . ')'); 
$dbh->exec('INSERT INTO `orders` (`band_id`, `user_id`, `user_name`, `band_name`, `band_venue`) VALUES("'.$band_id.'", "'.$user_id.'", "'.$user_name.'", "'.$name.'", "'.$venue.'")'); 
$dbh->commit(); 

您可以使用進一步改善0

+0

好的,謝謝,但是如果我像使用pdo寫的那樣使用它,我該如何調用變量? – Beep

+0

哪些變量你有麻煩? – thelastshadow

+0

劑量無關緊要我在mysql中使用了一個觸發器,並得到了周圍,感謝您的建議和幫助,雖然 – Beep

相關問題