[英]Alter table with PHP and MySQL, add a column with an '@' sign
我正在嘗試檢查表中是否有特定的列,如果沒有,則將該列添加到其中。 只要輸入值沒有@符號,我的代碼就可以正常工作。 我已經嘗試在'$ email'周圍加上或不加上單引號作為輸入字符串。 任何幫助將非常感激。
$email = strtolower(mysql_real_escape_string($_SESSION['email']));
$result = mysql_query("SHOW COLUMNS FROM `selections` LIKE '$email'",$conn);
$exists = (mysql_num_rows($result))?TRUE:FALSE;
if ($exists == FALSE) {
$query2 = "ALTER TABLE selections ADD $email VARCHAR( 120 ) NOT NULL";
$add= mysql_query($query2,$conn);
var_dump($query2);
echo("this error". mysql_error());
}
$ query2是直接從phpmyadmin中獲取的,即使使用@符號輸入也可以在其中工作
謝謝你的幫助!
在進行其他操作之前, 請考慮以其他方式執行此操作。 您將為每封電子郵件在表中添加一個字段-您可能不知道的是,這會通過增加行的大小來增加表的大小,並且還會將您限制為固定數量的字段( 此鏈接很明顯突出顯示每行最多65535個字節。每個VARCHAR字符(取決於字符集)在3到8個字節之間)
您的請求失敗的真正原因是@
是SQL查詢中的特殊字符,而phpmyadmin恰好足夠聰明,可以對其進行轉義。 @
表示MySQL使用的SQL方言中的變量。 您可以對MySQL進行反引號轉義,也可以退出使用此表,而轉而支持這樣的表結構:
selection:
* id
* your metadata here
emails:
* id
* email_address
selection_emails:
* id
* selection_id
* email_id
第三個表稱為關聯表。 它使您可以繼續規范化數據。
您可以使用大括號{$email}
將{$email}
括起來,以將其明確定義為字符串中的變量,但是在此之前,您可能還需要在此變量中轉義奇數字符。
更改表格時,還應在其周圍加上反引號,以允許出現奇數字符。
最好的方法是使用參數化查詢 ,並刪除DEPRECATED mysql庫。 並且也不允許在字段名稱中使用奇數字符。
我還要問您為什么要添加電子郵件作為新列。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.