2015-12-22 4 views
2

Я очень зеленый на PHP. Мне нужно создать небольшую службу на стороне сервера, которая будет захватывать данные, преобразовывать их и заполнять в базу данных MySQL.проверить количество строк запроса с php

Все в порядке. Мне удалось создать PHP-скрипт, который обновляет существующие строки в моей базе данных.

У меня проблемы с проверкой Если мне нужно обновить или добавить строки. Не могли бы вы помочь мне?

$servername = "localhost"; 
$username = "almazini"; 
$password = "3334444"; 
$dbname = "almazini"; 

$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); 
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

то у меня есть цикл через мой массив ... и выполнение SQL-запрос:

$sql = "UPDATE MyTargetTable SET SRate = $sr, BRate = $br WHERE Name='$name' AND SName = '$surname' "; 
$stmt = $conn->prepare($sql); 
$stmt->execute(); 

Как я могу проверить, если есть строка в MyTargetTable, который я должен обновить? Если такой строки нет, я хотел бы запустить другой запрос, чтобы вставить новую строку.

ответ

2

Вы можете установить ограничение на UNIQUE самой таблицы MySQL, чтобы не допускать повторяющиеся значения. Выполните следующие действия с вашего подключения консоли MySQL:

ALTER TABLE MyTargetTable 
ADD UNIQUE INDEX FullName (Name, SName); 

Далее используйте INSERT ... ON DUPLICATE KEY UPDATE запрос:

$sql = "INSERT INTO MyTargetTable VALUES (what, ever, values, here) 
ON DUPLICATE KEY UPDATE SRate = :sr, BRate = :br"; 

, а затем связать переменные $sr и $br позже, как показано на examples here.

+0

Очень элегантное решение, которое выполняет именно то, что мне нужно! большое спасибо! – Almazini

0

Сначала вы должны проверить базу данных, передав параметры в запросе, и если возвращаемый счет больше 0, чем обновление, в противном случае вставьте новую строку.

Алгоритма как этого

$count= "SELECT count(*) as count FROM MyTargetTable WHERE Name='$name' AND SName = '$surname'" ; 

if(count > 0) 
$sql = // Your Update Query 
else 
$sql = //your insert query 

Надеется, что это помогает

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