我正在设置一个函数,以检查users我的数据库中的表中是否存在传递的用户名.为此,我使用以下代码:
function usernameCheck($username) {
$con = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );
$stmt = $con->prepare("SELECT username FROM users WHERE username = ':name'");
$stmt->bindParam(':name', $username);
$stmt->execute();
if($stmt->rowCount() > 0){
echo "exists!";
} else {
echo "non existant";
}
}
Run Code Online (Sandbox Code Playgroud)
但是,无论我尝试什么设置$username,我都无法得到任何exists!回报.我已经尝试改变它来检查一个额外的列,比如userID,但它仍然不起作用.我认为我的语法是正确的,但我是PDO的新手,所以我可能错过了一些容易修复的东西.
谢谢.
我可以连接,但是当谈到准备好的声明时,我得到了错误.有什么不对吗?
码:
// Open connection
$db = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE);
//check connection
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
// Create statement object
$stmt = $db->stmt_init();
// sql statement
$sql = "INSERT INTO ch_users ('uid','admin','password','directory','size','format','locationid') VALUES (?, 1, ?, ?, ?, ?, 1)";
// Create a prepared statement
$stmt = $db->prepare($sql) or die($db->error());
Run Code Online (Sandbox Code Playgroud) 所以我在我的网站上设置了一个下载数据库,使我能够跟踪下载次数,并且我正在尝试为我和我的同胞设置一个前端,以便将新的下载插入到数据库中.我主要用PHP设置前端.
我的分页设置方式消除了我的表单发布的可能性,所以我有JS序列化数据并重新加载页面,然后我在PHP中反序列化数据,将值粘贴到mysql查询中,并尝试运行它.
这是我的SQL代码在PHP中的样子:
$sql = "INSERT INTO dl (id, file, desc) VALUES ('$idd', '$file', '$desc')";
Run Code Online (Sandbox Code Playgroud)
哪个变成了这个字符串:
INSERT INTO dl (id, file, desc) VALUES ('a56', 'test.zip', 'cake')
Run Code Online (Sandbox Code Playgroud)
但是当页面尝试运行它时,我收到此错误:
您的SQL语法有错误; 检查与MySQL服务器版本对应的手册,以便在'desc'附近使用正确的语法VALUES('a56','test.zip','cake')'在第1行
而且运行查询的代码行不在第1行这一事实加剧了它的怪异性.它在第28行.
任何帮助表示赞赏:)
我在试图弄清楚为什么$query2失败时遇到了问题.我一遍又一遍地看着这段代码,但无法弄清楚.
这是失败的代码行..
$query2 = mysqli_query($con,"SELECT * FROM forum_topics WHERE category-id='".$cid."' ORDER BY topic_reply_date DESC")
or die ("Query2 failed: %s\n".($query2->error));
Run Code Online (Sandbox Code Playgroud)
有没有人看到我失踪的东西会导致失败?
$user = new User();
if(!$user->isLoggedIn()) {
Redirect::to('index.php');
}
$logged = $user->isLoggedIn();
$con = mysqli_connect("localhost", "root", "", "db");
$cid = $_GET['cid'];
$userid = ( isset( $_SESSION['user'] ) ? $_SESSION['user'] : "" );
if(isset( $_SESSION['user'])) {
$logged = " | <a href='forum_create_topic.php?cid=".$cid."'>Create a new topic</a>";
}
$query = mysqli_query($con,"SELECT * FROM forum_categories WHERE id='".$cid."' LIMIT 1");
$numrows = mysqli_num_rows($query);
if($numrows …Run Code Online (Sandbox Code Playgroud) 我正在尝试构建一个简单的PHP记录插入,但我似乎无法让它工作,它一直说我的语法有错误.
这不会出现在实时生产服务器上,这仅限于内部(我的使用),因此注入/攻击不是问题.
代码:
<?php
$servername = "server";
$username = "un";
$password = "p";
$dbname = "db";
$title = $_POST['title'];
$firstname = $_POST['firstname'];
$surname = $_POST['surname'];
$gender = $_POST['gender'];
$address = $_POST['address'];
$dob = $_POST['dob'];
$evetelephone = $_POST['eve-telephone'];
$daytelephone = $_POST['day-telephone'];
$occupation = $_POST['occupation'];
$email = $_POST['email'];
$hearabout = $_POST['hear-about'];
$consent = $_POST['consent'];
$readrules = $_POST['readrules'];
$injury = $_POST['injury'];
$questions = $_POST['questions'];
$gymrisk = $_POST['gymrisk'];
$rules = $_POST['rules'];
$remove = $_POST['remove'];
$fullname = $_POST['fullname'];
$signature = 'test';/*$_POST['signature'];*/
try {
$conn …Run Code Online (Sandbox Code Playgroud) 我一直在尝试从我的数据库中选择两个默认日期之间的项目:现在和60天前.但是,我尝试的所有查询都不起作用.
这是我尝试过的:
$Now = date("Y-m-d");
$Before = date("Y-m-d", strtotime("-60 days");
// This is try1
$sql = "SELECT * FROM myTable WHERE myTimestamp BETWEEN " . $Before . " AND " . $Now;
// This is try2
$sql = "SELECT * FROM myTable WHERE myTimestamp >= " . $Before . " AND myTimestamp <= " . $Now;
Run Code Online (Sandbox Code Playgroud)
我猜对了如何做到这一点.我已经查看了与此问题相同的其他问题,但没有提出任何解决方案.
请注意:这些查询不会出错.他们只是没有找回任何东西.我还习惯get_defined_vars()在页面上打印日期.这是他们展示的:
[Now] => 2016-01-07
[Before] => 2015-11-08
Run Code Online (Sandbox Code Playgroud) 我在 PDO 中有一个带有多个参数的准备好的语句,有没有办法将参数绑定在组中,或者链接调用以避免繁琐的调用bindParam每个项目?
现在看起来是什么样子(我在其他地方有更多参数化查询):
$stmt = $pdo->prepare("INSERT INTO users (name, pass, mail, created, timezone_name, hash_pass, salt) VALUES (:name, :pass, :mail, :created, :timezone, :hashed, :salt") ;
$stmt->bindParam(':name', $name, PDO::PARAM_STR);
$stmt->bindParam(':pass', $pass, PDO::PARAM_STR);
$stmt->bindParam(':mail', $mail, PDO::PARAM_STR);
$stmt->bindParam(':created', $date, PDO::PARAM_INT);
$stmt->bindParam(':timezone', $timezone, PDO::PARAM_STR);
$stmt->bindParam(':hashed', $hash, PDO::PARAM_STR);
$stmt->bindParam(':salt', $salt, PDO::PARAM_STR);
$stmt->execute();
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 php 制作一个注册页面,然后当我在下面编写 mysql 语句时,它不会接受它,而是会吐出一个错误,我现在正试图找出这个错误几个小时。
$query = "INSERT INTO users(username, password,name,surname,email,role)VALUES($username, $password,$name,$lastname,$email,$role)";
$stmt = mysqli_prepare ($dbh, $query) or die(mysqli_error($dbh));
Run Code Online (Sandbox Code Playgroud)
显示的错误是:
您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,了解在第 1 行“@hotmail.com,Employee)”附近使用的正确语法。
这是我的查询:
Select Date_format(`date`, '%b %Y') as 'Categories',
..... as 'a1',....... as 'a2'
FROM table1
GROUP BY Date_format(`date`, '%b %Y')
ORDER BY Date_format(`date`, '%b %Y') ASC
Run Code Online (Sandbox Code Playgroud)
答案是按字母顺序排列的,因为date_format将日期转换为字符串,我需要按日期排序,但是,分组是问题所在。我group by只需要为 Date_format('date','%b %Y')
请给出解决方案
我正在尝试使用表单和PHP函数将值输入到数据库表中.PHP似乎很好,因为它创建的SQL语句看起来没问题,但数据库总是会抛出错误.这是我的代码生成的SQL语句(具有任意值):
INSERT INTO Iteminfo ('itemName', 'itemSeller', 'itemCategory', 'itemDescription', 'itemPrice', 'itemPostage', 'itemBegin', 'itemEnd', 'buynow', 'itemPicture')
values ('gorillaz album', 'ben', 'music', 'new one ', '5.00', '1.00', '2010-03-15 14:59:51', '2010-03-16 14:59:51', '0', 'http://www.thefader.com/wp-content/uploads/2010/01/gorillaz-plastic-beach.jpg')
Run Code Online (Sandbox Code Playgroud)
当我使用PHP函数来评估查询时以及当我使用phpMyAdmin手动输入查询时,这会引发错误.但是,我看不出它有什么问题.任何人都可以对此有所了解吗?除了itemPrice和itemPostage(存储为DECIMAL(4,2))以及itemBegin和itemEnd之外,所有字段都是VARCHAR值,它们存储为DATETIME.