2016-08-04 9 views
-2

Я хочу проверить свою таблицу sql, если строка уже существует. Я хочу сохранить данные, если он не существует в моей таблице. Я использую в select query, но он не работает.Проверьте, существует ли строка

это мой код:

$sql = "INSERT INTO searchtable (word, position, count) VALUES (:word , :position, :count)"; 

$statement = $db->prepare($sql); 


$temp="SELECT COUNT(word) AS searchtableFromword FROM searchtable WHERE word=$title" ; 

echo $temp; 

if($temp== 0) 
{ 
    $statement->execute(array(
     'word' => $title, 
     'position' => $fileNum, 
     'count' => $titleVal 
    )); 
} 
+0

'mysql_num_rows',' prepare'. Вы понимаете, что происходит в вашем коде? –

+0

исправлено это спасибо, но все еще есть ошибка – adi

+0

Вы должны изучить основы, вы не можете использовать mysql_num_rows ($ temp) 'для строки –

ответ

5

Если вы хотите, чтобы вставить запись, если она не существует, просто использовать INSERT IGNORE

$sql = "INSERT IGNORE INTO searchtable (word, position, count) VALUES (:word , :position, :count)"; 

$statement = $db->prepare($sql); 

Это позволит убедиться, что существующие строки остаются нетронутыми новый будет вставлен, если запись отсутствует.

Если вы используете ключевое слово IGNORE, ошибки, возникающие при выполнении инструкции INSERT , игнорируются. Например, без IGNORE строка, которая дублирует существующий индекс UNIQUE или значение PRIMARY KEY в таблице , вызывает ошибку с повторяющимся ключом, и оператор прерывается. С IGNORE строка отбрасывается и ошибок не возникает. Игнорируемые ошибки могут генерировать предупреждения вместо этого, хотя ошибок с дубликат-ключом нет.

Конечно для этого, чтобы быть успешным, вам нужен уникальный индекс на колонке интереса word

+0

Его по-прежнему сохраняют данные, даже если его alredy существует – adi

+7

Для этого «слово» должно быть либо первичным ключом, либо уникальным ключом. –

+0

Да, просто добавил, что я сам. Я думаю, что ваш пост и мое обновление появились одновременно :) @MiguelGonzalez – e4c5

Смежные вопросы