Этот запрос должен работать:
$result = mysql_query("SELECT * FROM Users WHERE UserName LIKE '%$username%'");
while($row = mysql_fetch_array($result))
{
echo $row['FirstName'];
}
Проблема заключается в одинарных кавычках, поэтому ваш запрос завершается с ошибкой и возвращает FALSE, и цикл WHILE не может выполняться. Использование% позволяет сопоставлять любые результаты, содержащие вашу строку (например, SomeText- $ username-SomeText).
Это просто ответ на ваш вопрос, вы должны реализовать материал, упомянутый в других сообщениях: обработка ошибок , используйте escape-строки (пользователи могут вводить что-либо в поле, и вы ДОЛЖНЫ убедиться, что это не произвольный код), используйте PDO вместо mysql_connect, который теперь лишен.
Наткнулся на этот вопрос, ища быстрый и минималистский фрагмент, который я мог бы использовать. Пришлось собрать его сам из сообщений выше. Возможно, кому-то это будет полезно:
data_frame_trimmed = data_frame.apply(lambda x: x.str.strip() if x.dtype == "object" else x)
Ниже приведено решение по столбцам с применением pandas:
import numpy as np
def strip_obj(col):
if col.dtypes == object:
return (col.astype(str)
.str.strip()
.replace({'nan': np.nan}))
return col
df = df.apply(strip_obj, axis=0)
Это преобразует значения в столбцы типа объекта в строку. Следует проявлять осторожность при использовании столбцов смешанного типа. Например, если ваша колонка - это почтовые индексы с 20001 и «21110», вы получите «20001» и «21110».
Я нашел следующий код полезным и что-то, что, вероятно, поможет другим. Этот фрагмент позволит вам удалять пробелы в столбце, а также во всем DataFrame, в зависимости от вашего варианта использования.
import pandas as pd
def remove_whitespace(x):
try:
# remove spaces inside and outside of string
x = "".join(x.split())
except:
pass
return x
# Apply remove_whitespace to column only
df.orderId = df.orderId.apply(remove_whitespace)
print(df)
# Apply to remove_whitespace to entire Dataframe
df = df.applymap(remove_whitespace)
print(df)
Вы можете использовать метод pandas Series.str.strip()
, чтобы сделать это быстро для каждого столбца типа:
>>> data = pd.DataFrame({'values': [' ABC ', ' DEF', ' GHI ']})
>>> data
values
0 ABC
1 DEF
2 GHI
>>> data['values'].str.strip()
0 ABC
1 DEF
2 GHI
Name: values, dtype: object
«Данные ['values']. str.strip ()« ответ выше не работал для меня, но я нашел простую работу. Я уверен, что есть лучший способ сделать это. Функция str.strip () работает на Series. Таким образом, я преобразовал столбец dataframe в серию, разделил пробел, заменил преобразованный столбец обратно в dataframe. Ниже приведен пример кода.
import pandas as pd
data = pd.DataFrame({'values': [' ABC ', ' DEF', ' GHI ']})
print ('-----')
print (data)
data['values'].str.strip()
print ('-----')
print (data)
new = pd.Series([])
new = data['values'].str.strip()
data['values'] = new
print ('-----')
print (new)
Когда вы вызываете pandas.read_csv
, вы можете использовать регулярное выражение, которое соответствует нулевому или более пробелам, за которым следует запятая, а в качестве разделителя - ноль или более пробелов.
Например, здесь "data.csv"
:
In [19]: !cat data.csv
1.5, aaa, bbb , ddd , 10 , XXX
2.5, eee, fff , ggg, 20 , YYY
(Первая строка заканчивается тремя пробелами после XXX
, а вторая строка заканчивается последним Y
.)
Следующие использует pandas.read_csv()
для чтения файлов с регулярным выражением ' *, *'
в качестве разделителя. (Использование регулярного выражения в качестве разделителя доступно только в механизме «python» read_csv()
.)
In [20]: import pandas as pd
In [21]: df = pd.read_csv('data.csv', header=None, delimiter=' *, *', engine='python')
In [22]: df
Out[22]:
0 1 2 3 4 5
0 1.5 aaa bbb ddd 10 XXX
1 2.5 eee fff ggg 20 YYY